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

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

          Given thmStmt being x₁ → x₂ → ⋯ → xₙ, find the longest suffix xₘ → ⋯ → xₙ such that each xᵢ is a Prop and independent.

          Equations
          Instances For

            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