Skip to content

Commit 508b698

Browse files
committed
test: test case for #10775
1 parent efbbb0b commit 508b698

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed

tests/lean/run/issue10775.lean

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
set_option linter.unusedVariables false
2+
3+
opaque R : (n m : Int) → Type
4+
5+
axiom mkR : Nat → R n m
6+
7+
noncomputable def d : ∀ (n m : Int), R n m
8+
| .ofNat n, .ofNat m => mkR 0
9+
| .negSucc n, .negSucc m => mkR 0
10+
| .negSucc 0, .ofNat 0 => mkR 0
11+
| .ofNat _, .negSucc _ => mkR 0
12+
| .negSucc _, .ofNat _ => mkR 0
13+
14+
/--
15+
error: unsolved goals
16+
case refine_1
17+
⊢ ∀ (n m : Nat), ¬↑n + 1 = ↑m → mkR 0 = mkR 0
18+
19+
case refine_2
20+
⊢ ∀ (n m : Nat), ¬Int.negSucc n + 1 = Int.negSucc m → mkR 0 = mkR 0
21+
22+
case refine_3
23+
⊢ ¬0 = 0 → mkR 0 = mkR 0
24+
25+
case refine_4
26+
⊢ ∀ (a a_1 : Nat), ¬↑a + 1 = Int.negSucc a_1 → mkR 0 = mkR 0
27+
28+
case refine_5
29+
⊢ ∀ (a a_1 : Nat), (a = 0 → a_1 = 0 → False) → ¬Int.negSucc a + 1 = ↑a_1 → mkR 0 = mkR 0
30+
-/
31+
#guard_msgs in
32+
example : (n m : Int) → (hnm : n + 1 ≠ m) → d n m = mkR 0 := by
33+
refine d.fun_cases_unfolding (motive := fun n m r => (n + 1 ≠ m) → r = mkR 0)
34+
?_ ?_ ?_ ?_ ?_ <;> dsimp
35+
36+
/--
37+
error: unsolved goals
38+
case case1
39+
n✝ m✝ : Nat
40+
hnm : Int.ofNat n✝ + 1 ≠ Int.ofNat m✝
41+
⊢ d (Int.ofNat n✝) (Int.ofNat m✝) = mkR 0
42+
43+
case case2
44+
n✝ m✝ : Nat
45+
hnm : Int.negSucc n✝ + 1 ≠ Int.negSucc m✝
46+
⊢ d (Int.negSucc n✝) (Int.negSucc m✝) = mkR 0
47+
48+
case case3
49+
hnm : Int.negSucc 0 + 1 ≠ Int.ofNat 0
50+
⊢ d (Int.negSucc 0) (Int.ofNat 0) = mkR 0
51+
52+
case case4
53+
a✝¹ a✝ : Nat
54+
hnm : Int.ofNat a✝¹ + 1 ≠ Int.negSucc a✝
55+
⊢ d (Int.ofNat a✝¹) (Int.negSucc a✝) = mkR 0
56+
57+
case case5
58+
a✝¹ a✝ : Nat
59+
x✝ : a✝¹ = 0 → a✝ = 0 → False
60+
hnm : Int.negSucc a✝¹ + 1 ≠ Int.ofNat a✝
61+
⊢ d (Int.negSucc a✝¹) (Int.ofNat a✝) = mkR 0
62+
-/
63+
#guard_msgs in
64+
example : (n m : Int) → (hnm : n + 1 ≠ m) → d n m = mkR 0 := by
65+
intros n m hnm
66+
fun_cases d
67+
68+
-- set_option trace.Elab.induction true in
69+
70+
/--
71+
error: unsolved goals
72+
case case1
73+
n✝ m✝ : Nat
74+
hnm : Int.ofNat n✝ + 1 ≠ Int.ofNat m✝
75+
⊢ d (Int.ofNat n✝) (Int.ofNat m✝) = mkR 0
76+
77+
case case2
78+
n✝ m✝ : Nat
79+
hnm : Int.negSucc n✝ + 1 ≠ Int.negSucc m✝
80+
⊢ d (Int.negSucc n✝) (Int.negSucc m✝) = mkR 0
81+
82+
case case3
83+
hnm : Int.negSucc 0 + 1 ≠ Int.ofNat 0
84+
⊢ d (Int.negSucc 0) (Int.ofNat 0) = mkR 0
85+
86+
case case4
87+
a✝¹ a✝ : Nat
88+
hnm : Int.ofNat a✝¹ + 1 ≠ Int.negSucc a✝
89+
⊢ d (Int.ofNat a✝¹) (Int.negSucc a✝) = mkR 0
90+
91+
case case5
92+
a✝¹ a✝ : Nat
93+
x✝ : a✝¹ = 0 → a✝ = 0 → False
94+
hnm : Int.negSucc a✝¹ + 1 ≠ Int.ofNat a✝
95+
⊢ d (Int.negSucc a✝¹) (Int.ofNat a✝) = mkR 0
96+
-/
97+
#guard_msgs(pass trace, all) in
98+
example : (n m : Int) → (hnm : n + 1 ≠ m) → d n m = mkR 0 := by
99+
intros n m hnm
100+
cases n, m using d.fun_cases_unfolding
101+
102+
/--
103+
error: unsolved goals
104+
case case1
105+
n✝ m✝ : Nat
106+
hnm : Int.ofNat n✝ + 1 ≠ Int.ofNat m✝
107+
⊢ mkR 0 = mkR 0
108+
109+
case case2
110+
n✝ m✝ : Nat
111+
hnm : Int.negSucc n✝ + 1 ≠ Int.negSucc m✝
112+
⊢ mkR 0 = mkR 0
113+
114+
case case3
115+
hnm : Int.negSucc 0 + 1 ≠ Int.ofNat 0
116+
⊢ mkR 0 = mkR 0
117+
118+
case case4
119+
a✝¹ a✝ : Nat
120+
hnm : Int.ofNat a✝¹ + 1 ≠ Int.negSucc a✝
121+
⊢ mkR 0 = mkR 0
122+
123+
case case5
124+
a✝¹ a✝ : Nat
125+
x✝ : a✝¹ = 0 → a✝ = 0 → False
126+
hnm : Int.negSucc a✝¹ + 1 ≠ Int.ofNat a✝
127+
⊢ mkR 0 = mkR 0
128+
-/
129+
#guard_msgs(pass trace, all) in
130+
example : (n m : Int) → (hnm : n + 1 ≠ m) → d n m = mkR 0 := by
131+
intros n m hnm
132+
induction n, m using d.fun_cases_unfolding

0 commit comments

Comments
 (0)