79 lines
1.8 KiB
Text
79 lines
1.8 KiB
Text
@[recursor 4]
|
||
def Or.elim2 {p q r : Prop} (major : p ∨ q) (left : p → r) (right : q → r) : r :=
|
||
Or.elim major left right
|
||
|
||
new_frontend
|
||
|
||
theorem tst0 {p q : Prop } (h : p ∨ q) : q ∨ p :=
|
||
begin
|
||
induction h;
|
||
{ apply Or.inr; assumption };
|
||
{ apply Or.inl; assumption }
|
||
end
|
||
|
||
theorem tst1 {p q : Prop } (h : p ∨ q) : q ∨ p :=
|
||
begin
|
||
induction h with
|
||
| inr h2 => Or.inl h2
|
||
| inl h1 => Or.inr h1
|
||
end
|
||
|
||
theorem tst2 {p q : Prop } (h : p ∨ q) : q ∨ p :=
|
||
begin
|
||
induction h using elim2 with
|
||
| left _ => Or.inr $ by assumption
|
||
| right _ => Or.inl $ by assumption
|
||
end
|
||
|
||
theorem tst3 {p q : Prop } (h : p ∨ q) : q ∨ p :=
|
||
begin
|
||
induction h using elim2 with
|
||
| right h => Or.inl h
|
||
| left h => Or.inr h
|
||
end
|
||
|
||
theorem tst4 {p q : Prop } (h : p ∨ q) : q ∨ p :=
|
||
begin
|
||
induction h using elim2 with
|
||
| right h => ?myright
|
||
| left h => ?myleft;
|
||
case myleft { exact Or.inr h };
|
||
case myright { exact Or.inl h };
|
||
end
|
||
|
||
theorem tst5 {p q : Prop } (h : p ∨ q) : q ∨ p :=
|
||
begin
|
||
induction h using elim2 with
|
||
| right h => Or.inl ?myright
|
||
| left h => Or.inr ?myleft;
|
||
case myleft assumption;
|
||
case myright exact h;
|
||
end
|
||
|
||
theorem tst6 {p q : Prop } (h : p ∨ q) : q ∨ p :=
|
||
begin
|
||
cases h with
|
||
| inr h2 => Or.inl h2
|
||
| inl h1 => Or.inr h1
|
||
end
|
||
|
||
theorem tst7 {α : Type} (xs : List α) (h : (a : α) → (as : List α) → xs ≠ a :: as) : xs = [] :=
|
||
begin
|
||
induction xs with
|
||
| nil => rfl
|
||
| cons z zs ih => absurd rfl (h z zs)
|
||
end
|
||
|
||
theorem tst8 {α : Type} (xs : List α) (h : (a : α) → (as : List α) → xs ≠ a :: as) : xs = [] :=
|
||
begin
|
||
induction xs;
|
||
exact rfl;
|
||
exact absurd rfl $ h _ _
|
||
end
|
||
|
||
theorem tst9 {α : Type} (xs : List α) (h : (a : α) → (as : List α) → xs ≠ a :: as) : xs = [] :=
|
||
begin
|
||
cases xs with
|
||
| nil => rfl
|
||
| cons z zs => absurd rfl (h z zs)
|
||
end
|