Documentation

Lean.Elab.Tactic.BVDecide.Frontend.BVDecide.Reflect

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

Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Equations
    Instances For

      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 deriviation. 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

        • The atoms encountered so far. Saved as a map from BitVec expressions to a (width, atomNumber) pair.

        • atomsAssignmentCache : Expr

          A cache for atomsAssignment. We maintain the invariant that this value is only used if atoms is non empty. The reason for not using an Option is that it would pollute a lot of code with error handling that is never hit as this invariant is enforced before all of this code.

        Instances For
          @[reducible, inline]

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

          Equations
          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

                    Run a reflection computation as a MetaM one.

                    Equations
                    Instances For

                      Retrieve the atoms as pairs of their width and expression.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

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

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

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

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[specialize #[]]
                              def Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyBinaryProof' (mkFRefl : ExprExpr) (fst : Expr) (fproof : Option Expr) (mkSRefl : ExprExpr) (snd : Expr) (sproof : Option Expr) :
                              Equations
                              Instances For
                                @[specialize #[]]
                                def Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyBinaryProof (mkRefl : ExprExpr) (fst : Expr) (fproof : Option Expr) (snd : Expr) (sproof : Option Expr) :
                                Equations
                                Instances For
                                  @[specialize #[]]
                                  def Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyTernaryProof (mkRefl : ExprExpr) (fst : Expr) (fproof : Option Expr) (snd : Expr) (sproof : Option Expr) (thd : Expr) (tproof : Option Expr) :
                                  Equations
                                  Instances For

                                    The state of the lemma reflection monad.

                                    • The list of top level lemmas that got created on the fly during reflection.

                                    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.

                                      Equations
                                      Instances For
                                        def Lean.Elab.Tactic.BVDecide.Frontend.LemmaM.run {α : Type} (m : LemmaM α) (state : LemmaState := { lemmas := #[] }) :
                                        Equations
                                        Instances For