Documentation

LeanPool.Lentil.Gadgets.TheoremLifting

Gadgets for lifting a propositional theorem to the level of temporal logic.

If p : Prop, then lift it to ⌞ p ⌟ of type TLA.pred σ; otherwise do nothing and return p (note that in this case, whether p is of type TLA.pred σ is not checked).

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

    Recursively convert a propositional Expr p into the corresponding TLA predicate, replacing leaves via alist. fuel bounds the recursion depth; each recursive call descends into a strict subterm, so seeding it from the expression's depth always suffices.

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

      Convert a subterm and lift the result to a pure predicate.

      Equations
      Instances For

        Convert a propositional Expr into the corresponding TLA predicate, seeding the recursion fuel from the expression's approximate depth.

        Equations
        Instances For

          Which shape a lifted theorem's conclusion takes.

          • Iff : LiftingCase

            The case where the conclusion is a single .

          • Other : LiftingCase

            The other cases, including those where the conclusion is a series of .

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

            Convert a theorem statement to the level of temporal logic. Given the theorem statement and the name of the additional universe level (required by σ in TLA.pred σ), return the case for lifting and the converted statement.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def TLA.Lifting.liftTheorem (thmName : Lean.Name) (liftedThmName : Option Lean.Name) (tactic? : Option (Lean.TSyntax `term)) :

              Lift the theorem named thmName to the temporal-logic level, optionally renaming the result (liftedThmName) and supplying a proof tactic?.

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

                #tla_lift thm₁ ... thmₙ lifts (typically purely first-order) theorems thm₁, ... ,thmₙ to the temporal logic level. Each new theorem will have the prefix TLA. and the same suffix as before.

                For example, after executing #tla_lift Decidable.not_not, there will be a new theorem named TLA.not_not in the environment.

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

                  #tla_lift thm => newthm behaves like #tla_lift, but only lifts one theorem, while naming the new theorem as newthm.

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