Skip to content

Commit b3a8b4f

Browse files
committed
Remove accidently added solution+
1 parent 89bdc29 commit b3a8b4f

File tree

1 file changed

+0
-86
lines changed

1 file changed

+0
-86
lines changed

HumanEvalLean/HumanEval63.lean

Lines changed: 0 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,3 @@
1-
def fibfib (n : Nat): Nat :=
2-
match n with
3-
| 0 => 0
4-
| 1 => 0
5-
| 2 => 1
6-
| (n+3) => fibfib (n+2) + fibfib (n+1) + fibfib n
7-
8-
theorem fibfib_of_three_le {n : Nat} (hn : 3 ≤ n) :
9-
fibfib n = fibfib (n - 1) + fibfib (n -2) + fibfib (n - 3) := by
10-
conv =>
11-
lhs
12-
unfold fibfib
13-
cases n with
14-
| zero => simp at hn
15-
| succ m =>
16-
cases m with
17-
| zero => simp at hn
18-
| succ n =>
19-
cases n with
20-
| zero => simp at hn
21-
| succ m =>
22-
simp
23-
24-
def computeFibfib (n : Nat) : Nat :=
25-
match n with
26-
| 0 => 0
27-
| 1 => 0
28-
| 2 => 1
29-
| (m + 3) => go (m + 3) 1 0 0 3 where
30-
31-
go (m prev1 prev2 prev3 curr : Nat) : Nat :=
32-
if curr ≥ m
33-
then prev1 + prev2 + prev3
34-
else go m (prev1 + prev2 + prev3) prev1 prev2 (curr + 1)
35-
termination_by m - curr
36-
37-
theorem testCase1 : computeFibfib 2 = 1 := by native_decide
38-
theorem testCase2 : computeFibfib 1 = 0 := by native_decide
39-
theorem testCase3 : computeFibfib 5 = 4 := by native_decide
40-
theorem testCase4 : computeFibfib 8 = 24 := by native_decide
41-
theorem testCase5 : computeFibfib 10 = 81 := by native_decide
42-
theorem testCase6 : computeFibfib 12 = 274 := by native_decide
43-
theorem testCase7 : computeFibfib 14 = 927 := by native_decide
44-
45-
theorem computeFibfib_correct (n : Nat) : computeFibfib n = fibfib n := by
46-
unfold computeFibfib
47-
unfold fibfib
48-
cases n with
49-
| zero => simp[fibfib]
50-
| succ m =>
51-
cases m with
52-
| zero => simp[fibfib]
53-
| succ n =>
54-
cases n with
55-
| zero => simp[fibfib]
56-
| succ m =>
57-
simp only
58-
suffices ∀ (m curr prev1 prev2 prev3 : Nat), 3 ≤ curr → curr ≤ m → prev1 = fibfib (curr - 1) →
59-
prev2 = fibfib (curr - 2) → prev3 = fibfib (curr - 3) →
60-
computeFibfib.go m prev1 prev2 prev3 curr = fibfib (m - 1) + fibfib (m - 2) + fibfib (m-3) by
61-
apply this
62-
· omega
63-
· omega
64-
· simp [fibfib]
65-
· simp [fibfib]
66-
· simp [fibfib]
67-
intro m curr
68-
induction h : m - curr generalizing curr with
69-
| zero =>
70-
simp [Nat.sub_eq_zero_iff_le] at h
71-
intro prev1 prev2 prev3 hcurr1 hcurr2 hprev1 hprev2 hprev3
72-
have : curr = m := by omega
73-
simp [computeFibfib.go, this, hprev1, hprev2, hprev3]
74-
| succ n ih =>
75-
intro prev1 prev2 prev3 hcurr1 hcurr2 hprev1 hprev2 hprev3
76-
unfold computeFibfib.go
77-
have : ¬ curr ≥ m := by omega
78-
simp only [ge_iff_le, this, ↓reduceIte]
79-
apply ih
80-
· omega
81-
· omega
82-
· omega
83-
· simp [fibfib_of_three_le, hcurr1, hprev1, hprev2, hprev3]
84-
· simp [hprev1]
85-
· simp [hprev2]
86-
871
/-!
882
## Prompt
893

0 commit comments

Comments
 (0)