30 lines
738 B
Text
30 lines
738 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 (** return REPEAT(imp_tactic() ^ conj_tactic() ^ conj_hyp_tactic() ^ assumption_tactic()) **)
|
||
|
done
|
||
|
|
||
|
(* Display proof term generated by previous tactic *)
|
||
|
Show Environment 1
|