Skip to content
48 changes: 46 additions & 2 deletions HumanEvalLean/HumanEval5.lean
Original file line number Diff line number Diff line change
@@ -1,5 +1,49 @@
def intersperse : Unit :=
()
example : [].intersperse 7 = [] := rfl
example : [5, 6, 3, 2].intersperse 8 = [5, 8, 6, 8, 3, 8, 2] := rfl
example : [2, 2, 2].intersperse 2 = [2, 2, 2, 2, 2] := rfl

open List

/--
info: List.length_intersperse.{u_1} {α : Type u_1} {l : List α} {sep : α} : (intersperse sep l).length = 2 * l.length - 1
-/
#guard_msgs in
#check length_intersperse

/--
info: List.getElem?_intersperse_two_mul.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat} :
(intersperse sep l)[2 * i]? = l[i]?
-/
#guard_msgs in
#check getElem?_intersperse_two_mul

/--
info: List.getElem?_intersperse_two_mul_add_one.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat} (h : i + 1 < l.length) :
(intersperse sep l)[2 * i + 1]? = some sep
-/
#guard_msgs in
#check getElem?_intersperse_two_mul_add_one

/--
info: List.getElem_intersperse_two_mul.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat}
(h : 2 * i < (intersperse sep l).length) : (intersperse sep l)[2 * i] = l[i]
-/
#guard_msgs in
#check getElem_intersperse_two_mul

/--
info: List.getElem_intersperse_two_mul_add_one.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat}
(h : 2 * i + 1 < (intersperse sep l).length) : (intersperse sep l)[2 * i + 1] = sep
-/
#guard_msgs in
#check getElem_intersperse_two_mul_add_one

/--
info: List.getElem_eq_getElem_intersperse_two_mul.{u_1} {α : Type u_1} {l : List α} {sep : α} {i : Nat} (h : i < l.length) :
l[i] = (intersperse sep l)[2 * i]
-/
#guard_msgs in
#check getElem_eq_getElem_intersperse_two_mul

/-!
## Prompt
Expand Down