-
begin defer [assuming a b...] [in g]
Start a "defer" block. If
group g
is provided, give nameg
to the hypothesis of typeGroup
introduced. Ifassuming a b...
(wherea
,b
, ... are one or several user-provided names) is provided, also introduce in the context abstract variables of the same names. -
defer [in g]
Discharge the current sub-goal, deferring it for later. If
in g
is provided, store it in the hypothesisg
which must be of typeGroup ...
. Ifin g
is not provided, the tactic picks the hypothesis of typeGroup ...
which has been introduced last (if there are several).The sub-goal being differed has to make sense in the context of the
Group
it is stored in (which is the context of thebegin defer
that introduced theGroup
). Otherwise Coq will raise an error involving the context of the evar in theGroup
. -
defer [H]: E [in g]
Introduces a new assumption
E
, named afterH
, and defer its proof ing
. This is equivalent toassert E as H by (defer in g)
.If
H
is not provided, addsE
in front of the goal instead of adding it to the context -- i.e. on a goalG
,defer: E
produces a goalE -> G
. -
end defer
To be called on a
end defer
goal. It does some cleanup and gives back the variables and side-goals that have been procrastinated. -
deferred [in g]
Adds to the goal all the already deferred propositions. I.e. on a goal
G
, gives back a goalX1 -> .. -> Xn -> E
, whereX1
..Xn
are the already deferred propositions. -
deferred [H]: E [in g]
Adds an assumption
E
to the context, named afterH
, and produces a subgoalX1 -> .. -> Xn -> E
, whereX1
..Xn
are the already deferred propositions. As a convenience feature, whenE
is trivially provable fromX1
..Xn
, this subgoal is automatically discharged usingauto
.This is equivalent to
assert E as H; [ deferred in g; try now auto |]
.If
H
is not provided, addsE
in front of the goal instead of adding it to the context. -
exploit deferred tac [in g]
This allows iterating a user-provided tactic
tac
on the propositions stored in the groupg
. It is fine fortac
to fail for some of the propositions. The whole tactic (exploit deferred tac
) will fail iftac
did not make the proof progress overall (i.e. if nothing happened).For example, to try rewriting with all deferred facts, one would do
exploit deferred (fun H => rewrite H)
.