lean2/tests/lean/tactic2.lean
Leonardo de Moura 98897b467d feat(frontends/lean/parser): add support for Lua expression code blocks
In expression code blocks, we do not have to write a "return".
After this commit, the argument of an apply command is a Lua expression instead of a Lua block of code. That is, we can now write

apply (** REPEAT(ORELSE(imp_tactic, conj_tactic, conj_hyp_tactic, assumption_tactic)) **)

instead of

apply (** return REPEAT(ORELSE(imp_tactic, conj_tactic, conj_hyp_tactic, assumption_tactic)) **)

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-11-29 10:21:24 -08:00

30 lines
No EOL
728 B
Text

Variables p q r : Bool
Theorem T1 : p => q => p /\ q :=
Discharge (fun H1,
Discharge (fun H2,
let H1 : p := _,
H2 : q := _
in Conj H1 H2
)).
apply assumption_tactic (* solve first metavar *)
done
apply assumption_tactic (* solve second metavar *)
done
(**
simple_tac = REPEAT(imp_tactic() ^ conj_tactic() ^ assumption_tactic())
**)
Theorem T2 : p => q => p /\ q /\ p := _.
apply simple_tac
done
Show Environment 1
Theorem T3 : p => p /\ q => r => q /\ r /\ p := _.
apply (** REPEAT(ORELSE(imp_tactic, conj_tactic, conj_hyp_tactic, assumption_tactic)) **)
done
(* Display proof term generated by previous tactic *)
Show Environment 1