Documentation

Lean.Elab.Tactic.Do.VCGen.Basic

Instances For
    Instances For
      def Lean.Elab.Tactic.Do.elabConfig (cfg : Syntax) (init : VCGen.Config := { }) (logExceptions : Bool := true) :
      Instances For
        • numJoinParams : Nat

          Number of join point arguments.

        • altIdx : Nat

          Index of the match alternative.

        • altParams : Array Expr

          Parameter FVars of the match alternative.

        • altLCtxIdx : Nat

          The size of the local context in the alternative after the match has been split and all splitter parameters have been introduced. This is so that we can construct the Σ Lᵢ part of the hyps field.

        • hyps : MVarId

          MVar to be filled with the stateful hypotheses of the match arm. This should include bindings from the local context Lᵢ of the call site and is of the form (x,y,z ∈ Lᵢ) Σ Lᵢ, ⌜x = a ∧ y = b ∧ z = c⌝ ∧ Hᵢ, where ..., Lᵢ ⊢ Hᵢ ⊢ₛ wp[jp x y z] Q is the call site. The Σ Lᵢ is short for something like let x := ...; ∃ y (h : y = ...), ∃ z, ∃ (h₂ : p).

        • joinPrf : Expr

          The proof that jump sites should use to discharge Hᵢ ⊢ₛ wp[jp a b c] Q.

        Instances For
          Instances For
            Instances For
              @[reducible, inline]
              Instances For
                Instances For
                  def Lean.Elab.Tactic.Do.emitVC (subGoal : Expr) (name : Name) :
                  Instances For
                    Instances For
                      def Lean.Elab.Tactic.Do.withJP {α : Type} (jp : FVarId) (info : JumpSiteInfo) :
                      VCGenM αVCGenM α
                      Instances For
                        def Lean.Elab.Tactic.Do.withLetDeclShared {α : Type} (name : Name) (type val : Expr) (k : BoolExpr(ExprVCGenM Expr)VCGenM α) (kind : LocalDeclKind := LocalDeclKind.default) :
                        Instances For

                          TODO: Fix this when rewriting the do elaborator

                          Instances For

                            Reduces (1) Prod projection functions and (2) Projs in application heads, and (3) beta reduces. Will not unfold projection functions unless further beta reduction happens.

                            Instances For
                              def Lean.Elab.Tactic.Do.mkSpecContext (optConfig lemmas : Syntax) (ignoreStarArg : Bool := false) :
                              Instances For
                                def Lean.Elab.Tactic.Do.withLocalSpecs {m : TypeType u_1} {α : Type} [Monad m] [MonadControlT VCGenM m] (xs : Array Expr) (k : m α) :
                                m α
                                Instances For