Skip to content

Commit 9986361

Browse files
committed
chore: add iterator tests
1 parent ddd85ef commit 9986361

File tree

7 files changed

+104
-47
lines changed

7 files changed

+104
-47
lines changed

src/Std/Data/DTreeMap/Iterator.lean

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ The iterator yields the elements of the map in order and then terminates.
2626
-/
2727
@[inline]
2828
public def iter {α : Type u} {β : α → Type v}
29-
(cmp : α → α → Ordering := by exact compare) (m : DTreeMap α β cmp) :=
30-
Raw.iter cmp ⟨m.inner⟩
29+
{cmp : α → α → Ordering} (m : DTreeMap α β cmp) :=
30+
@Raw.iter _ _ cmp ⟨m.inner⟩
3131

3232
/--
3333
Returns a finite iterator over the keys of a dependent tree map.
@@ -41,9 +41,8 @@ The key and value types must live in the same universe.
4141
* `Productive` instance: always
4242
-/
4343
@[inline]
44-
public def keysIter {α : Type u} {β : α → Type u}
45-
(cmp : α → α → Ordering := by exact compare) (m : DTreeMap α β cmp) :=
46-
Raw.keysIter cmp ⟨m.inner⟩
44+
public def keysIter {α : Type u} {β : α → Type u} {cmp : α → α → Ordering} (m : DTreeMap α β cmp) :=
45+
@Raw.keysIter _ _ cmp ⟨m.inner⟩
4746

4847
/--
4948
Returns a finite iterator over the values of a tree map.
@@ -57,20 +56,20 @@ The key and value types must live in the same universe.
5756
* `Productive` instance: always
5857
-/
5958
@[inline]
60-
public def valuesIter {α : Type u} {β : Type u} (cmp : α → α → Ordering := by exact compare)
59+
public def valuesIter {α : Type u} {β : Type u} {cmp : α → α → Ordering}
6160
(m : DTreeMap α (fun _ => β) cmp) :=
62-
Raw.valuesIter cmp ⟨m.inner⟩
61+
@Raw.valuesIter _ _ cmp ⟨m.inner⟩
6362

6463
@[simp]
6564
public theorem iter_toList {cmp : α → α → Ordering} (m : DTreeMap α β cmp) :
66-
(m.iter cmp).toList = m.toList := Raw.iter_toList ⟨m.inner⟩
65+
m.iter.toList = m.toList := Raw.iter_toList ⟨m.inner⟩
6766

6867
@[simp]
69-
public theorem keysIter_toList {α β} {cmp : α → α → Ordering} (m : DTreeMap α β cmp) :
70-
(m.keysIter cmp).toList = m.keys := Raw.keysIter_toList ⟨m.inner⟩
68+
public theorem keysIter_toList {cmp : α → α → Ordering} (m : DTreeMap α β cmp) :
69+
m.keysIter.toList = m.keys := Raw.keysIter_toList ⟨m.inner⟩
7170

7271
@[simp]
73-
public theorem valuesIter_toList {α β} {cmp : α → α → Ordering} (m : DTreeMap α (fun _ => β) cmp) :
74-
(m.valuesIter cmp).toList = m.values := Raw.valuesIter_toList ⟨m.inner⟩
72+
public theorem valuesIter_toList {cmp : α → α → Ordering} (m : DTreeMap α (fun _ => β) cmp) :
73+
m.valuesIter.toList = m.values := Raw.valuesIter_toList ⟨m.inner⟩
7574

7675
end Std.DTreeMap

src/Std/Data/DTreeMap/Raw/Iterator.lean

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ The iterator yields the elements of the map in order and then terminates.
2727
-/
2828
@[inline]
2929
public def iter {α : Type u} {β : α → Type v}
30-
(cmp : α → α → Ordering := by exact compare) (m : Raw α β cmp) :=
30+
{cmp : α → α → Ordering} (m : Raw α β cmp) :=
3131
(Internal.Zipper.iterOfTree m.inner : Iter ((a : α) × β a))
3232

3333
/--
@@ -43,8 +43,8 @@ The key and value types must live in the same universe.
4343
-/
4444
@[inline]
4545
public def keysIter {α : Type u} {β : α → Type u}
46-
(cmp : α → α → Ordering := by exact compare) (m : Raw α β cmp) :=
47-
((m.iter cmp).map fun e => e.1 : Iter α)
46+
{cmp : α → α → Ordering} (m : Raw α β cmp) :=
47+
(m.iter.map fun e => e.1 : Iter α)
4848

4949
/--
5050
Returns a finite iterator over the values of a tree map.
@@ -59,24 +59,24 @@ The key and value types must live in the same universe.
5959
-/
6060
@[inline]
6161
public def valuesIter {α : Type u} {β : Type u}
62-
(cmp : α → α → Ordering := by exact compare) (m : Raw α (fun _ => β) cmp) :=
63-
((m.iter cmp).map fun e => e.2 : Iter β)
62+
{cmp : α → α → Ordering} (m : Raw α (fun _ => β) cmp) :=
63+
(m.iter.map fun e => e.2 : Iter β)
6464

6565
@[simp]
6666
public theorem iter_toList {cmp : α → α → Ordering} (m : Raw α β cmp) :
67-
(m.iter cmp).toList = m.toList := by
67+
(m.iter).toList = m.toList := by
6868
rw [iter, toList]
6969
apply Internal.Zipper.toList.iterOfTree
7070

7171
@[simp]
72-
public theorem keysIter_toList {α β} {cmp : α → α → Ordering} (m : Raw α β cmp) :
73-
(m.keysIter cmp).toList = m.keys := by
72+
public theorem keysIter_toList {cmp : α → α → Ordering} (m : Raw α β cmp) :
73+
(m.keysIter).toList = m.keys := by
7474
rw [keysIter, keys, iter, ← Internal.Impl.map_fst_toList_eq_keys]
7575
apply Internal.Zipper.map_iterOfTree_eq_tree_toList_map
7676

7777
@[simp]
78-
public theorem valuesIter_toList {α β} {cmp : α → α → Ordering} (m : Raw α (fun _ => β) cmp) :
79-
(m.valuesIter cmp).toList = m.values := by
78+
public theorem valuesIter_toList {cmp : α → α → Ordering} (m : Raw α (fun _ => β) cmp) :
79+
(m.valuesIter).toList = m.values := by
8080
rw [valuesIter, values, iter, Internal.Impl.values_eq_map_snd, ← Internal.Impl.toList_eq_toListModel]
8181
apply Internal.Zipper.map_iterOfTree_eq_tree_toList_map
8282

src/Std/Data/TreeMap/Iterator.lean

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ The iterator yields the elements of the map in order and then terminates.
2727
-/
2828
@[inline]
2929
public def iter {α : Type u} {β : Type v}
30-
(cmp : α → α → Ordering := by exact compare) (m : TreeMap α β cmp) :=
31-
((m.inner.iter cmp).map fun e => (e.1, e.2) : Iter (α × β))
30+
{cmp : α → α → Ordering} (m : TreeMap α β cmp) :=
31+
(m.inner.iter.map fun e => (e.1, e.2) : Iter (α × β))
3232

3333
/--
3434
Returns a finite iterator over the keys of a tree map.
@@ -43,8 +43,8 @@ The key and value types must live in the same universe.
4343
-/
4444
@[inline]
4545
public def keysIter {α : Type u} {β : Type u}
46-
(cmp : α → α → Ordering := by exact compare) (m : TreeMap α β cmp) :=
47-
m.inner.keysIter cmp
46+
{cmp : α → α → Ordering} (m : TreeMap α β cmp) :=
47+
m.inner.keysIter
4848

4949
/--
5050
Returns a finite iterator over the values of a tree map.
@@ -58,26 +58,26 @@ The key and value types must live in the same universe.
5858
* `Productive` instance: always
5959
-/
6060
@[inline]
61-
public def valuesIter {α : Type u} {β : Type u} (cmp : α → α → Ordering := by exact compare)
61+
public def valuesIter {α : Type u} {β : Type u} {cmp : α → α → Ordering}
6262
(m : TreeMap α β cmp) :=
63-
m.inner.valuesIter cmp
63+
m.inner.valuesIter
6464

6565
@[simp]
6666
public theorem iter_toList {cmp : α → α → Ordering} (m : TreeMap α β cmp) :
67-
(m.iter cmp).toList = m.toList := by
67+
m.iter.toList = m.toList := by
6868
simp only [iter, Iter.toList_map, DTreeMap.iter_toList, DTreeMap.toList,
6969
DTreeMap.Internal.Impl.toList_eq_toListModel, toList, DTreeMap.Const.toList,
7070
DTreeMap.Internal.Impl.Const.toList_eq_toListModel_map]
7171

7272

7373
@[simp]
7474
public theorem keysIter_toList {α β} {cmp : α → α → Ordering} (m : TreeMap α β cmp) :
75-
(m.keysIter cmp).toList = m.keys :=
75+
m.keysIter.toList = m.keys :=
7676
m.inner.keysIter_toList
7777

7878
@[simp]
7979
public theorem valuesIter_toList {α β} {cmp : α → α → Ordering} (m : TreeMap α β cmp) :
80-
(m.valuesIter cmp).toList = m.values :=
80+
m.valuesIter.toList = m.values :=
8181
m.inner.valuesIter_toList
8282

8383
end Std.TreeMap

src/Std/Data/TreeMap/Raw/Iterator.lean

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ The iterator yields the elements of the map in order and then terminates.
2727
-/
2828
@[inline]
2929
public def iter {α : Type u} {β : Type v}
30-
(cmp : α → α → Ordering := by exact compare) (m : Raw α β cmp) :=
31-
((m.inner.iter cmp).map fun e => (e.1, e.2) : Iter (α × β))
30+
{cmp : α → α → Ordering} (m : Raw α β cmp) :=
31+
(m.inner.iter.map fun e => (e.1, e.2) : Iter (α × β))
3232

3333
/--
3434
Returns a finite iterator over the keys of a tree map.
@@ -43,8 +43,8 @@ The key and value types must live in the same universe.
4343
-/
4444
@[inline]
4545
public def keysIter {α : Type u} {β : Type u}
46-
(cmp : α → α → Ordering := by exact compare) (m : Raw α β cmp) :=
47-
(DTreeMap.Raw.keysIter cmp m.inner : Iter α)
46+
{cmp : α → α → Ordering} (m : Raw α β cmp) :=
47+
(m.inner.keysIter : Iter α)
4848

4949
/--
5050
Returns a finite iterator over the values of a tree map.
@@ -59,24 +59,24 @@ The key and value types must live in the same universe.
5959
-/
6060
@[inline]
6161
public def valuesIter {α : Type u} {β : Type u}
62-
(cmp : α → α → Ordering := by exact compare) (m : Raw α β cmp) :=
63-
(DTreeMap.Raw.valuesIter cmp m.inner : Iter β)
62+
{cmp : α → α → Ordering} (m : Raw α β cmp) :=
63+
(m.inner.valuesIter : Iter β)
6464

6565
@[simp]
6666
public theorem iter_toList {α : Type u} {β : Type v} {cmp : α → α → Ordering} (m : Raw α β cmp) :
67-
((m.iter cmp).toList) = m.toList := by
67+
(m.iter.toList) = m.toList := by
6868
simp only [iter, Iter.toList_map, DTreeMap.Raw.iter_toList]
6969
simp only [DTreeMap.Raw.toList, DTreeMap.Internal.Impl.toList_eq_toListModel, toList,
7070
DTreeMap.Raw.Const.toList, DTreeMap.Internal.Impl.Const.toList_eq_toListModel_map]
7171

7272
@[simp]
7373
public theorem keysIter_toList {α β} {cmp : α → α → Ordering} (m : Raw α β cmp) :
74-
(m.keysIter cmp).toList = m.keys :=
74+
m.keysIter.toList = m.keys :=
7575
DTreeMap.Raw.keysIter_toList m.inner
7676

7777
@[simp]
7878
public theorem valuesIter_toList {α β} {cmp : α → α → Ordering} (m : Raw α β cmp) :
79-
(m.valuesIter cmp).toList = m.values :=
79+
m.valuesIter.toList = m.values :=
8080
DTreeMap.Raw.valuesIter_toList m.inner
8181

8282
end Std.TreeMap.Raw

src/Std/Data/TreeSet/Iterator.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ The iterator yields the elements of the set in order and then terminates.
2828
-/
2929
@[inline]
3030
public def iter {α : Type u}
31-
(cmp : α → α → Ordering := by exact compare) (m : TreeSet α cmp) :=
32-
((m.inner.iter cmp).map fun e => e.1 : Iter α)
31+
{cmp : α → α → Ordering} (m : TreeSet α cmp) :=
32+
(m.inner.iter.map fun e => e.1 : Iter α)
3333

3434
@[simp]
3535
public theorem iter_toList {cmp : α → α → Ordering} (m : TreeSet α cmp) :
36-
(m.iter cmp).toList = m.toList := by
36+
m.iter.toList = m.toList := by
3737
rw [iter, Iter.toList_map, TreeMap.iter_toList, toList, TreeMap.toList, TreeMap.keys, Std.DTreeMap.Const.map_fst_toList_eq_keys]
3838

3939
end Std.TreeSet

src/Std/Data/TreeSet/Raw/Iterator.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ The iterator yields the elements of the set in order and then terminates.
2828
-/
2929
@[inline]
3030
public def iter {α : Type u}
31-
(cmp : α → α → Ordering := by exact compare) (m : Raw α cmp) :=
32-
((m.inner.iter cmp).map fun e => e.1 : Iter α)
31+
{cmp : α → α → Ordering} (m : Raw α cmp) :=
32+
(m.inner.iter.map fun e => e.1 : Iter α)
3333

3434
@[simp]
3535
public theorem iter_toList {cmp : α → α → Ordering} (m : Raw α cmp) :
36-
(m.iter cmp).toList = m.toList := by
36+
m.iter.toList = m.toList := by
3737
rw [iter, Iter.toList_map, TreeMap.Raw.iter_toList, TreeMap.Raw.toList]
3838
rw [TreeSet.Raw.toList]
3939
rw [Std.DTreeMap.Internal.Impl.foldr_eq_foldr_toList]

tests/lean/run/treemap.lean

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ import Std.Data.TreeSet.Raw.Basic
99
import Std.Data.DTreeMap.Raw.AdditionalOperations
1010
import Std.Data.TreeMap.Raw.AdditionalOperations
1111
import Std.Data.TreeMap.AdditionalOperations
12-
12+
import Std.Data.DTreeMap.Iterator
13+
import Std.Data.DTreeMap.Raw.Iterator
14+
import Std.Data.TreeMap.Iterator
15+
import Std.Data.TreeMap.Raw.Iterator
16+
import Std.Data.TreeSet.Iterator
17+
import Std.Data.TreeSet.Raw.Iterator
1318
open Std
1419

1520
variable {α : Type u} {β : Type v} [Ord α]
@@ -467,6 +472,18 @@ local instance : Inhabited ((_ : Nat) × Nat) where
467472
#guard_msgs in
468473
#eval DTreeMap.Raw.Const.mergeWith (fun _ v v' => v' - v) t (.ofList [⟨0, 0⟩, ⟨1, 1⟩, ⟨2, 2⟩])
469474

475+
/-- info: [⟨1, 2⟩, ⟨2, 4⟩, ⟨3, 6⟩] -/
476+
#guard_msgs in
477+
#eval t.iter.toList
478+
479+
/-- info: [1, 2, 3] -/
480+
#guard_msgs in
481+
#eval t.keysIter.toList
482+
483+
/-- info: [2, 4, 6] -/
484+
#guard_msgs in
485+
#eval t.valuesIter.toList
486+
470487
end DTreeMap.Raw
471488

472489
namespace DTreeMap
@@ -951,6 +968,18 @@ warning: declaration uses 'sorry'
951968
#guard_msgs in
952969
#eval DTreeMap.Const.mergeWith (fun _ v v' => v' - v) t (.ofList [⟨0, 0⟩, ⟨1, 1⟩, ⟨2, 2⟩])
953970

971+
/-- info: [⟨1, 2⟩, ⟨2, 4⟩, ⟨3, 6⟩] -/
972+
#guard_msgs in
973+
#eval t.iter.toList
974+
975+
/-- info: [1, 2, 3] -/
976+
#guard_msgs in
977+
#eval t.keysIter.toList
978+
979+
/-- info: [2, 4, 6] -/
980+
#guard_msgs in
981+
#eval t.valuesIter.toList
982+
954983
end DTreeMap
955984

956985
namespace TreeMap.Raw
@@ -1257,6 +1286,19 @@ local instance : Inhabited ((_ : Nat) × Nat) where
12571286
#guard_msgs in
12581287
#eval TreeMap.Raw.mergeWith (fun _ v v' => v' - v) t (.ofList [⟨0, 0⟩, ⟨1, 1⟩, ⟨2, 2⟩])
12591288

1289+
/-- info: [(1, 2), (2, 4), (3, 6)] -/
1290+
#guard_msgs in
1291+
#eval t.iter.toList
1292+
1293+
/-- info: [1, 2, 3] -/
1294+
#guard_msgs in
1295+
#eval t.keysIter.toList
1296+
1297+
/-- info: [2, 4, 6] -/
1298+
#guard_msgs in
1299+
#eval t.valuesIter.toList
1300+
1301+
12601302
end TreeMap.Raw
12611303

12621304
namespace TreeMap
@@ -1595,6 +1637,18 @@ warning: declaration uses 'sorry'
15951637
#guard_msgs in
15961638
#eval TreeMap.mergeWith (fun _ v v' => v' - v) t (.ofList [⟨0, 0⟩, ⟨1, 1⟩, ⟨2, 2⟩])
15971639

1640+
/-- info: [(1, 2), (2, 4), (3, 6)] -/
1641+
#guard_msgs in
1642+
#eval t.iter.toList
1643+
1644+
/-- info: [1, 2, 3] -/
1645+
#guard_msgs in
1646+
#eval t.keysIter.toList
1647+
1648+
/-- info: [2, 4, 6] -/
1649+
#guard_msgs in
1650+
#eval t.valuesIter.toList
1651+
15981652
end TreeMap
15991653

16001654
namespace TreeSet.Raw
@@ -1762,6 +1816,10 @@ def t : TreeSet.Raw Nat :=
17621816
#guard_msgs in
17631817
#eval TreeSet.Raw.merge t (.ofList [0, 1, 2])
17641818

1819+
/-- info: [1, 2, 3] -/
1820+
#guard_msgs in
1821+
#eval t.iter.toList
1822+
17651823
end TreeSet.Raw
17661824

17671825
namespace TreeSet

0 commit comments

Comments
 (0)