2014-01-05 10:32:47 -08:00
|
|
|
(*
|
2013-12-26 15:54:53 -08:00
|
|
|
import("tactic.lua")
|
2013-12-06 14:42:49 -08:00
|
|
|
-- Define a simple tactic using Lua
|
2013-12-26 15:54:53 -08:00
|
|
|
auto = Repeat(OrElse(assumption_tac(), conj_tac(), conj_hyp_tac()))
|
2014-01-05 10:32:47 -08:00
|
|
|
*)
|
2013-12-06 14:42:49 -08:00
|
|
|
|
2014-01-05 12:05:08 -08:00
|
|
|
theorem T1 (A B : Bool) : A /\ B -> B /\ A :=
|
2013-12-06 14:42:49 -08:00
|
|
|
fun assumption : A /\ B,
|
|
|
|
let lemma1 : A := (by auto),
|
|
|
|
lemma2 : B := (by auto)
|
2014-01-05 11:25:58 -08:00
|
|
|
in (have B /\ A by auto)
|
2013-12-06 14:42:49 -08:00
|
|
|
|
2014-01-05 12:05:08 -08:00
|
|
|
print environment 1. -- print proof for the previous theorem
|
2013-12-06 15:01:54 -08:00
|
|
|
|
2014-01-05 12:05:08 -08:00
|
|
|
theorem T2 (A B : Bool) : A /\ B -> B /\ A :=
|
2013-12-06 14:42:49 -08:00
|
|
|
fun assumption : A /\ B,
|
2014-01-05 08:52:46 -08:00
|
|
|
let lemma1 : A := _,
|
|
|
|
lemma2 : B := _
|
|
|
|
in _.
|
|
|
|
auto. done.
|
|
|
|
auto. done.
|
|
|
|
auto. done.
|
2013-12-06 14:42:49 -08:00
|
|
|
|
2014-01-05 12:05:08 -08:00
|
|
|
theorem T3 (A B : Bool) : A /\ B -> B /\ A :=
|
2013-12-06 14:42:49 -08:00
|
|
|
fun assumption : A /\ B,
|
2014-01-05 08:52:46 -08:00
|
|
|
let lemma1 : A := _,
|
|
|
|
lemma2 : B := _
|
|
|
|
in _.
|
|
|
|
conj_hyp. exact. done.
|
|
|
|
conj_hyp. exact. done.
|
2014-01-09 08:33:52 -08:00
|
|
|
apply and_intro. exact. done.
|
2013-12-06 14:42:49 -08:00
|
|
|
|
2014-01-05 12:05:08 -08:00
|
|
|
theorem T4 (A B : Bool) : A /\ B -> B /\ A :=
|
2013-12-06 14:42:49 -08:00
|
|
|
fun assumption : A /\ B,
|
2014-01-05 08:52:46 -08:00
|
|
|
let lemma1 : A := _,
|
|
|
|
lemma2 : B := _
|
2014-01-05 11:25:58 -08:00
|
|
|
in (have B /\ A by auto).
|
2014-01-05 08:52:46 -08:00
|
|
|
conj_hyp. exact. done.
|
|
|
|
conj_hyp. exact. done.
|