vcgen tactic frontend: parse the user-facing argument syntax into a
VCGen.Context, run VCGen.run, and replace the main goal with the
resulting invariants and VCs.
Parse the optional [...] argument list for vcgen, partitioning entries into
spec theorems and simp lemmas. Follows the same approach as
Lean.Elab.Tactic.Do.VCGen.mkContext: each entry is first tried as a spec theorem,
and on failure falls back to a simp/unfold lemma processed via mkSimpContext.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Infer the program type of a vcgen goal, the key for frame-procedure selection and the expected
type for elaborating frames/until patterns. Peels leading binders, then reads the program type
from a bare wp … target, a pre ⊑ wp … entailment, or a Triple. When the program type is m α
with m a WPMonad, the monad m is returned (frameprocs are keyed by monad); otherwise the whole
program type is returned, so deep embeddings key on their own head. Returns none when the goal
exposes no program.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Tactic-level vcgen. Reuses the grind-mode implementation by re-quoting the
input as Grind.vcgen … and running it inside a GrindTacticM context built
without withProtectedMCtx, so leftover Grind.Goals flow back as the new tactic
goals. The optional with $g:grind clause runs as <;> $g and lets the user-supplied
grind step share an internalised E-graph with vcgen.
Equations
- One or more equations did not get rendered due to their size.