2015-03-07 01:47:01 +00:00
|
|
|
notation `⟪`:max t:(foldr `,` (e r, and.intro e r)) `⟫`:0 := t
|
|
|
|
|
|
|
|
check ⟪ trivial, trivial, trivial ⟫
|
|
|
|
|
|
|
|
theorem tst (a b c d : Prop) : a ∧ b ∧ c ∧ d ↔ d ∧ c ∧ b ∧ a :=
|
|
|
|
begin
|
|
|
|
apply iff.intro,
|
|
|
|
begin
|
|
|
|
intro H,
|
|
|
|
match H with
|
|
|
|
| ⟪ H₁, H₂, H₃, H₄ ⟫ := ⟪ H₄, H₃, H₂, H₁ ⟫
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
begin
|
|
|
|
intro H,
|
|
|
|
match H with
|
|
|
|
| ⟪ H₁, H₂, H₃, H₄ ⟫ :=
|
|
|
|
begin
|
2015-04-06 16:24:09 +00:00
|
|
|
repeat (apply and.intro | assumption)
|
2015-03-07 01:47:01 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
print definition tst
|
|
|
|
|
|
|
|
theorem tst2 (a b c d : Prop) : a ∧ b ∧ c ∧ d ↔ d ∧ c ∧ b ∧ a :=
|
|
|
|
begin
|
|
|
|
apply iff.intro,
|
2015-04-06 16:24:09 +00:00
|
|
|
repeat (intro H; repeat (cases H with [H', H] | apply and.intro | assumption))
|
2015-03-07 01:47:01 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
print definition tst2
|