Skip to content

Commit 60b49fc

Browse files
committed
cleanup
1 parent beb81cb commit 60b49fc

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

HumanEvalLean/HumanEval69.lean

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ open Std
66

77
public section
88

9+
/-! ## Implementation -/
10+
911
def frequencies (xs : List Nat) : TreeMap Nat Nat (fun a b => compare b a) :=
1012
xs.foldl (init := ∅) (fun freq (x : Nat) => freq.alter x (fun v? => some (v?.getD 0 + 1)))
1113

@@ -17,7 +19,35 @@ def search (xs : List Nat) : Int :=
1719
|>.first?
1820
kv.getD (-1)
1921

20-
-- missing api
22+
/-! ## Tests -/
23+
24+
example : search [5, 5, 5, 5, 1] = 1 := by native_decide
25+
example : search [4, 1, 4, 1, 4, 4] = 4 := by native_decide
26+
example : search [3, 3] = -1 := by native_decide
27+
example : search [8, 8, 8, 8, 8, 8, 8, 8] = 8 := by native_decide
28+
example : search [2, 3, 3, 2, 2] = 2 := by native_decide
29+
example : search [2, 7, 8, 8, 4, 8, 7, 3, 9, 6, 5, 10, 4, 3, 6, 7, 1, 7, 4, 10, 8, 1] = 1 := by native_decide
30+
example : search [3, 2, 8, 2] = 2 := by native_decide
31+
example : search [6, 7, 1, 8, 8, 10, 5, 8, 5, 3, 10] = 1 := by native_decide
32+
example : search [8, 8, 3, 6, 5, 6, 4] = -1 := by native_decide
33+
example : search [6, 9, 6, 7, 1, 4, 7, 1, 8, 8, 9, 8, 10, 10, 8, 4, 10, 4, 10, 1, 2, 9, 5, 7, 9] = 1 := by native_decide
34+
example : search [1, 9, 10, 1, 3] = 1 := by native_decide
35+
example : search [6, 9, 7, 5, 8, 7, 5, 3, 7, 5, 10, 10, 3, 6, 10, 2, 8, 6, 5, 4, 9, 5, 3, 10] = 5 := by native_decide
36+
example : search [1] = 1 := by native_decide
37+
example : search [8, 8, 10, 6, 4, 3, 5, 8, 2, 4, 2, 8, 4, 6, 10, 4, 2, 1, 10, 2, 1, 1, 5] = 4 := by native_decide
38+
example : search [2, 10, 4, 8, 2, 10, 5, 1, 2, 9, 5, 5, 6, 3, 8, 6, 4, 10] = 2 := by native_decide
39+
example : search [1, 6, 10, 1, 6, 9, 10, 8, 6, 8, 7, 3] = 1 := by native_decide
40+
example : search [9, 2, 4, 1, 5, 1, 5, 2, 5, 7, 7, 7, 3, 10, 1, 5, 4, 2, 8, 4, 1, 9, 10, 7, 10, 2, 8, 10, 9, 4] = 4 := by native_decide
41+
example : search [2, 6, 4, 2, 8, 7, 5, 6, 4, 10, 4, 6, 3, 7, 8, 8, 3, 1, 4, 2, 2, 10, 7] = 4 := by native_decide
42+
example : search [9, 8, 6, 10, 2, 6, 10, 2, 7, 8, 10, 3, 8, 2, 6, 2, 3, 1] = 2 := by native_decide
43+
example : search [5, 5, 3, 9, 5, 6, 3, 2, 8, 5, 6, 10, 10, 6, 8, 4, 10, 7, 7, 10, 8] = -1 := by native_decide
44+
example : search [10] = -1 := by native_decide
45+
example : search [9, 7, 7, 2, 4, 7, 2, 10, 9, 7, 5, 7, 2] = 2 := by native_decide
46+
example : search [5, 4, 10, 2, 1, 1, 10, 3, 6, 1, 8] = 1 := by native_decide
47+
example : search [7, 9, 9, 9, 3, 4, 1, 5, 9, 1, 2, 1, 1, 10, 7, 5, 6, 7, 6, 7, 7, 6] = 1 := by native_decide
48+
example : search [3, 10, 10, 9, 2] = -1 := by native_decide
49+
50+
/-! ## Missing API -/
2151

2252
@[simp, grind =]
2353
theorem Std.Iter.first?_toList {α β : Type w} [Iterator α Id β] [IteratorLoop α Id Id]
@@ -61,7 +91,7 @@ theorem Option.getD_map_eq_elim {o : Option α} {f : α → β} {fallback : β}
6191
(o.map f).getD fallback = o.elim fallback f := by
6292
cases o <;> simp
6393

64-
-- verification
94+
/-! ## Verification -/
6595

6696
theorem getElem?_frequencies {k : Nat} :
6797
(frequencies xs)[k]? = (some (xs.count k)).filter (0 < ·) := by
@@ -78,7 +108,11 @@ theorem mem_frequencies :
78108
simp
79109

80110
theorem search_eq_getD_find? :
81-
search xs = (frequencies xs |>.toList.find? (fun x => 0 < x.1 ∧ x.1 ≤ xs.count x.1) |>.map (↑·.fst) |>.getD (-1 : Int)) := by
111+
search xs =
112+
(frequencies xs
113+
|>.toList.find? (fun x => 0 < x.1 ∧ x.1 ≤ xs.count x.1)
114+
|>.map (↑·.fst)
115+
|>.getD (-1 : Int)) := by
82116
simp only [search, ← Iter.first?_toList, Iter.toList_map, Iter.toList_filter,
83117
TreeMap.toList_iter, List.head?_map]
84118
grind [List.find?_eq_find?, getElem?_frequencies]

0 commit comments

Comments
 (0)