Documentation

Lean.Meta.Tactic.BVDecide.Reflect.Basic

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

@[instance_reducible]
Equations
  • One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
  • One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
  • One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
  • One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
  • One or more equations did not get rendered due to their size.
@[instance_reducible]
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
    @[instance_reducible]
    Equations
    • One or more equations did not get rendered due to their size.

    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

      An atom interpreted by the UF theory.

      Instances For

        The state associated with the theory of uninterpreted functions (UF).

        • atoms : Array FunAtom

          The list of function atoms collected so far.

        • masks : Array (Array Bool)

          The list of congruence masks per function atom.

        • patterns : Array Expr

          The function atoms with their congruence-relevant arguments abstracted as lambda binders.

        Instances For

          Theory solver state.

          • funState : FunState

            State associated with the theory of uninterpreted functions (UF).

          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.

              Equations
              Instances For

                A reified version of an Expr representing a BVExpr.

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

                    A reified version of an Expr representing a BVPred.

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

                        A reified version of an Expr representing a BVLogicalExpr.

                        Instances For
                          Equations
                          • One or more equations did not get rendered due to their size.
                          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 SymM one.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              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
                                  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
                                    • 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
                                        def Lean.Meta.Tactic.BVDecide.ReifyM.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
                                          @[inline]
                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            @[specialize #[]]
                                            def Lean.Meta.Tactic.BVDecide.ReifyM.simplifyBinaryProof' (mkFRefl : Expr → Expr) (fst : Expr) (fproof : Option Expr) (mkSRefl : Expr → Expr) (snd : Expr) (sproof : Option Expr) :
                                            Equations
                                            Instances For
                                              @[specialize #[]]
                                              def Lean.Meta.Tactic.BVDecide.ReifyM.simplifyBinaryProof (mkRefl : Expr → Expr) (fst : Expr) (fproof : Option Expr) (snd : Expr) (sproof : Option Expr) :
                                              Equations
                                              Instances For
                                                @[specialize #[]]
                                                def Lean.Meta.Tactic.BVDecide.ReifyM.simplifyTernaryProof (mkRefl : Expr → Expr) (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.

                                                  Instances For
                                                    @[reducible, inline]

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

                                                    Equations
                                                    Instances For
                                                      Equations
                                                      Instances For

                                                        Add another top level lemma.

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

                                                          Drop all of the lemmas recorded so far.

                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            @[specialize #[]]
                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For
                                                              @[specialize #[]]
                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                @[specialize #[]]
                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                Instances For