Documentation

Lean.Meta.Tactic.BVDecide.Reflect.Basic

This module contains the implementation of the reflection monad, used by all other components of this directory.

A BitVec atom.

  • width : Nat

    The width of the BitVec that is being abstracted.

  • atomNumber : Nat

    A unique numeric identifier for the atom.

  • synthetic : Bool

    Whether the atom is synthetic. The effect of this is that values for this atom are not considered for the counter example derivation. This is for example useful when we introduce an atom over an expression, together with additional lemmas that fully describe the behavior of the atom.

Instances For

    The state of the reflection monad

    Instances For
      @[reducible, inline]

      The reflection monad, used to track BitVec variables that we see as we traverse the context.

      Instances For

        A reified version of an Expr representing a BVExpr.

        Instances For

          A reified version of an Expr representing a BVPred.

          Instances For

            A reified version of an Expr representing a BVLogicalExpr.

            Instances For

              A reified version of an Expr representing a BVLogicalExpr that we know to be true.

              Instances For
                def Lean.Meta.Tactic.BVDecide.M.run {α : Type} (m : M α) (hypotheses : Array Normalize.Hyp) :

                Run a reflection computation as a SymM one.

                Instances For

                  Retrieve the atoms as pairs of their width and expression.

                  Instances For

                    Retrieve a BitVec.Assignment representing the atoms we found so far.

                    Instances For
                      def Lean.Meta.Tactic.BVDecide.M.lookup (e : Expr) (width : Nat) (synthetic : Bool) :

                      Look up an expression in the atoms, recording it if it has not previously appeared.

                      Instances For
                        @[specialize #[]]
                        def Lean.Meta.Tactic.BVDecide.M.simplifyBinaryProof' (mkFRefl : ExprExpr) (fst : Expr) (fproof : Option Expr) (mkSRefl : ExprExpr) (snd : Expr) (sproof : Option Expr) :
                        Instances For
                          @[specialize #[]]
                          def Lean.Meta.Tactic.BVDecide.M.simplifyBinaryProof (mkRefl : ExprExpr) (fst : Expr) (fproof : Option Expr) (snd : Expr) (sproof : Option Expr) :
                          Instances For
                            @[specialize #[]]
                            def Lean.Meta.Tactic.BVDecide.M.simplifyTernaryProof (mkRefl : ExprExpr) (fst : Expr) (fproof : Option Expr) (snd : Expr) (sproof : Option Expr) (thd : Expr) (tproof : Option Expr) :
                            Instances For

                              The state of the lemma reflection monad.

                              Instances For
                                @[reducible, inline]

                                The lemma reflection monad. It extends the usual reflection monad M by adding the ability to add additional top level lemmas on the fly.

                                Instances For
                                  Instances For

                                    Add another top level lemma.

                                    Instances For