blob: 9720c1ef16c66499d877e911bb1ecb0e71096e14 [file] [edit]
universe u
axiom elimEx (motive : Nat → Nat → Sort u) (x y : Nat)
(diag : (a : Nat) → motive a a)
(upper : (delta a : Nat) → motive a (a + delta.succ))
(lower : (delta a : Nat) → motive (a + delta.succ) a)
: motive y x
/--
error: Invalid alternative name `lower2`: Expected `lower`
---
error: unsolved goals
case upper
q d : Nat
⊢ q + d.succ > q
---
error: Alternative `lower` has not been provided
-/
#guard_msgs in
theorem invalidAlt (p: Nat) : p ≤ q ∨ p > q := by
cases p, q using elimEx with
| lower2 /- error -/ d => apply Or.inl; admit
| upper d => apply Or.inr
| diag => apply Or.inl; apply Nat.le_refl
/--
error: Invalid alternative name `lower2`: Expected `lower`
---
error: Alternative `lower` has not been provided
-/
#guard_msgs in
theorem oneMissingAlt (p: Nat) : p ≤ q ∨ p > q := by
cases p, q using elimEx with
| upper d => apply Or.inl; admit
| diag => apply Or.inl; apply Nat.le_refl
| lower2 /- error -/ => apply Or.inr
/--
error: Duplicate alternative name `upper`
---
error: Alternative `lower` has not been provided
-/
#guard_msgs in
theorem doubleAlt (p: Nat) : p ≤ q ∨ p > q := by
cases p, q using elimEx with
| upper d => apply Or.inl; admit
| upper d /- error -/ => apply Or.inr
| diag => apply Or.inl; apply Nat.le_refl
/--
error: Invalid occurrence of the wildcard alternative `| _ => ...`: It must be the last alternative
-/
#guard_msgs in
theorem invalidWildCard (p: Nat) : p ≤ q ∨ p > q := by
cases p, q using elimEx with
| upper d => apply Or.inl; admit
| _ /- error -/ => apply Or.inr
| diag => apply Or.inl; apply Nat.le_refl
/--
error: Invalid alternative name `lower2`: There are no unhandled alternatives
---
error: unsolved goals
case lower
p delta✝ : Nat
⊢ p > p + delta✝.succ
-/
#guard_msgs in
theorem noAlt (p: Nat) : p ≤ q ∨ p > q := by
cases p, q using elimEx with
| upper d => apply Or.inl; admit
| lower => apply Or.inr
| diag => apply Or.inl; apply Nat.le_refl
| lower2 /- error -/ => apply Or.inr