Expand description
Tactic values and the combinators that compose them — the language layer over
the primitive ProofState methods. The backtracking combinators (first,
try_, repeat) speculate on a clone of the state and commit only on success,
so a partial failure never corrupts the proof.
Functions§
- all_
goals t1 <;> t2-style: applytto EVERY goal currently open (not just the focused one). Each goal is focused in turn; the subgoalstproduces for it become the new open set, in original goal order.- assumption
assumptionas a tactic value.- auto
auto(the backward chainer) as a tactic value.- cases
cases name(∧/∨/∃ elimination) as a tactic value.- crush
crushas a tactic value.- decide
decideas a tactic value.- exact
exact nameas a tactic value.- exists
exists witness(∃I) as a tactic value.- first
first [t1, t2, …]: try each tactic on a speculative copy and commit the first that succeeds; fail only if none apply.- induction
induction(structural induction overNat) as a tactic value.- induction_
over induction_over(generic structural induction overind_type) as a tactic value.- intro
intro nameas a tactic value.- left
left(∨I) as a tactic value.- omega
omegaas a tactic value.- repeat
repeat t: applytas long as it keeps applying (committing each success), then stop. Always succeeds. Bounded to avoid a non-progressing tactic looping forever.- rewrite
rewrite name(Leibniz substitution by an equality) as a tactic value.- right
right(∨I) as a tactic value.- seq
t1; t2; …: run each tactic in turn; fail (without committing the rest) at the first that does not apply.- simp
simpas a tactic value, its rule set drawn from everything in scope (premises, intro’d hypotheses, cited lemmas) — the script-level default.- split
split(∧I) as a tactic value.- then_
all t1 <;> t2: runt1on the focused goal, thent2on every goal it produces.- try_
try t: runtif it applies, otherwise leave the state unchanged. Always succeeds.