Skip to content

Commit 7fe45c5

Browse files
marcusrosselTwoFX
andauthored
HumanEval5 (#164)
* Add (partial) solution to HumanEval5 * Use `List.intersperse` * Simplify proof * Add proof for odd case * Gardening * Turn < into = * Rename theorem * Use Lean's theorems * Update to Lean v4.21.0-rc2 * Silence output --------- Co-authored-by: Markus Himmel <markus@himmel-villmar.de>
1 parent 118ff2f commit 7fe45c5

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

HumanEvalLean/HumanEval5.lean

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,49 @@
1-
def intersperse : Unit :=
2-
()
1+
example : [].intersperse 7 = [] := rfl
2+
example : [5, 6, 3, 2].intersperse 8 = [5, 8, 6, 8, 3, 8, 2] := rfl
3+
example : [2, 2, 2].intersperse 2 = [2, 2, 2, 2, 2] := rfl
4+
5+
open List
6+
7+
/--
8+
info: List.length_intersperse.{u_1} {α : Type u_1} {l : List α} {sep : α} : (intersperse sep l).length = 2 * l.length - 1
9+
-/
10+
#guard_msgs in
11+
#check length_intersperse
12+
13+
/--
14+
info: List.getElem?_intersperse_two_mul.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat} :
15+
(intersperse sep l)[2 * i]? = l[i]?
16+
-/
17+
#guard_msgs in
18+
#check getElem?_intersperse_two_mul
19+
20+
/--
21+
info: List.getElem?_intersperse_two_mul_add_one.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat} (h : i + 1 < l.length) :
22+
(intersperse sep l)[2 * i + 1]? = some sep
23+
-/
24+
#guard_msgs in
25+
#check getElem?_intersperse_two_mul_add_one
26+
27+
/--
28+
info: List.getElem_intersperse_two_mul.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat}
29+
(h : 2 * i < (intersperse sep l).length) : (intersperse sep l)[2 * i] = l[i]
30+
-/
31+
#guard_msgs in
32+
#check getElem_intersperse_two_mul
33+
34+
/--
35+
info: List.getElem_intersperse_two_mul_add_one.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat}
36+
(h : 2 * i + 1 < (intersperse sep l).length) : (intersperse sep l)[2 * i + 1] = sep
37+
-/
38+
#guard_msgs in
39+
#check getElem_intersperse_two_mul_add_one
40+
41+
/--
42+
info: List.getElem_eq_getElem_intersperse_two_mul.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat} (h : i < l.length) :
43+
l[i] = (intersperse sep l)[2 * i]
44+
-/
45+
#guard_msgs in
46+
#check getElem_eq_getElem_intersperse_two_mul
347

448
/-!
549
## Prompt

0 commit comments

Comments
 (0)