Documentation

Lean.Elab.Tactic.BVDecide.Frontend.Normalize

This module contains the implementation of bv_normalize which is effectively a custom bv_normalize simp set that is called like this: simp only [seval, bv_normalize]. The rules in bv_normalize fulfill two goals:

  1. Turn all hypothesis involving Bool and BitVec into the form x = true where x only consists of a operations on Bool and BitVec. In particular no Prop should be contained. This makes the reflection procedure further down the pipeline much easier to implement.
  2. Apply simplification rules from the Bitwuzla SMT solver.
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
      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

          A pass in the normalization pipeline. Takes the current goal and produces a refined one or closes the goal fully, indicated by returning none.

          Instances For

            Repeatedly run a list of Pass until they either close the goal or an iteration doesn't change the goal anymore.

            Responsible for applying the Bitwuzla style rewrite rules.

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

              Flatten out ands. That is look for hypotheses of the form h : (x && y) = true and replace them with h.left : x = true and h.right : y = true. This can enable more fine grained substitutions in embedded constraint substitution.

              Instances For

                Substitute embedded constraints. That is look for hypotheses of the form h : x = true and use them to substitute occurences of x within other hypotheses. Additionally this drops all redundant top level hypotheses.

                Instances For

                  Normalize with respect to Associativity and Commutativity.

                  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