935c2a03a3
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
38 lines
No EOL
891 B
Text
38 lines
No EOL
891 B
Text
(* import("tactic.lua") *)
|
|
variables p q r : Bool
|
|
|
|
theorem T1 : p => q => p /\ q :=
|
|
discharge (fun H1,
|
|
discharge (fun H2,
|
|
let H1 : p := _,
|
|
H2 : q := _
|
|
in and::intro H1 H2
|
|
)).
|
|
exact -- solve first metavar
|
|
done
|
|
exact -- solve second metavar
|
|
done
|
|
|
|
(*
|
|
simple_tac = Repeat(imp_tac() ^ conj_tac() ^ assumption_tac())
|
|
*)
|
|
|
|
theorem T2 : p => q => p /\ q /\ p := _.
|
|
simple_tac
|
|
done
|
|
|
|
print environment 1
|
|
|
|
theorem T3 : p => p /\ q => r => q /\ r /\ p := _.
|
|
(* Repeat(OrElse(imp_tac(), conj_tac(), conj_hyp_tac(), assumption_tac())) *)
|
|
done
|
|
|
|
-- Display proof term generated by previous tac
|
|
print environment 1
|
|
|
|
theorem T4 : p => p /\ q => r => q /\ r /\ p := _.
|
|
Repeat (OrElse (apply discharge) (apply and::intro) conj_hyp exact)
|
|
done
|
|
|
|
-- Display proof term generated by previous tac --
|
|
print environment 1 |