Documentation

Lean.Elab.Tactic.Do.VCGen.Basic

Instances For
    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