Skip to content

Commit 37529a5

Browse files
authored
chore: initial work on grind attributes for TreeMap (#8342)
1 parent fad3e0e commit 37529a5

File tree

24 files changed

+5626
-52
lines changed

24 files changed

+5626
-52
lines changed

src/Init/Data/Array/Lemmas.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1821,10 +1821,10 @@ theorem singleton_eq_toArray_singleton {a : α} : #[a] = [a].toArray := rfl
18211821
@[simp, grind] theorem mem_append {a : α} {xs ys : Array α} : a ∈ xs ++ ys ↔ a ∈ xs ∨ a ∈ ys := by
18221822
simp only [mem_def, toList_append, List.mem_append]
18231823

1824-
@[grind] theorem mem_append_left {a : α} {xs : Array α} (ys : Array α) (h : a ∈ xs) : a ∈ xs ++ ys :=
1824+
theorem mem_append_left {a : α} {xs : Array α} (ys : Array α) (h : a ∈ xs) : a ∈ xs ++ ys :=
18251825
mem_append.2 (Or.inl h)
18261826

1827-
@[grind] theorem mem_append_right {a : α} (xs : Array α) {ys : Array α} (h : a ∈ ys) : a ∈ xs ++ ys :=
1827+
theorem mem_append_right {a : α} (xs : Array α) {ys : Array α} (h : a ∈ ys) : a ∈ xs ++ ys :=
18281828
mem_append.2 (Or.inr h)
18291829

18301830
theorem not_mem_append {a : α} {xs ys : Array α} (h₁ : a ∉ xs) (h₂ : a ∉ ys) : a ∉ xs ++ ys :=
@@ -3740,7 +3740,7 @@ theorem contains_iff_exists_mem_beq [BEq α] {xs : Array α} {a : α} :
37403740
rcases xs with ⟨xs⟩
37413741
simp [List.contains_iff_exists_mem_beq]
37423742

3743-
@[grind =]
3743+
@[grind]
37443744
theorem contains_iff_mem [BEq α] [LawfulBEq α] {xs : Array α} {a : α} :
37453745
xs.contains a ↔ a ∈ xs := by
37463746
simp

src/Init/Data/List/Basic.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -900,13 +900,13 @@ theorem elem_eq_true_of_mem [BEq α] [ReflBEq α] {a : α} {as : List α} (h : a
900900
instance [BEq α] [LawfulBEq α] (a : α) (as : List α) : Decidable (a ∈ as) :=
901901
decidable_of_decidable_of_iff (Iff.intro mem_of_elem_eq_true elem_eq_true_of_mem)
902902

903-
@[grind] theorem mem_append_left {a : α} {as : List α} (bs : List α) : a ∈ as → a ∈ as ++ bs := by
903+
theorem mem_append_left {a : α} {as : List α} (bs : List α) : a ∈ as → a ∈ as ++ bs := by
904904
intro h
905905
induction h with
906906
| head => apply Mem.head
907907
| tail => apply Mem.tail; assumption
908908

909-
@[grind] theorem mem_append_right {b : α} (as : List α) {bs : List α} : b ∈ bs → b ∈ as ++ bs := by
909+
theorem mem_append_right {b : α} (as : List α) {bs : List α} : b ∈ bs → b ∈ as ++ bs := by
910910
intro h
911911
induction as with
912912
| nil => simp [h]

src/Init/Data/List/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2938,7 +2938,7 @@ theorem contains_iff_exists_mem_beq [BEq α] {l : List α} {a : α} :
29382938
l.contains a ↔ ∃ a' ∈ l, a == a' := by
29392939
induction l <;> simp_all
29402940

2941-
@[grind =]
2941+
@[grind]
29422942
theorem contains_iff_mem [BEq α] [LawfulBEq α] {l : List α} {a : α} :
29432943
l.contains a ↔ a ∈ l := by
29442944
simp

src/Init/Data/Vector/Lemmas.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1629,10 +1629,10 @@ theorem singleton_eq_toVector_singleton {a : α} : #v[a] = #[a].toVector := rfl
16291629
cases ys
16301630
simp
16311631

1632-
@[grind] theorem mem_append_left {a : α} {xs : Vector α n} (ys : Vector α m) (h : a ∈ xs) : a ∈ xs ++ ys :=
1632+
theorem mem_append_left {a : α} {xs : Vector α n} (ys : Vector α m) (h : a ∈ xs) : a ∈ xs ++ ys :=
16331633
mem_append.2 (Or.inl h)
16341634

1635-
@[grind] theorem mem_append_right {a : α} (xs : Vector α n) {ys : Vector α m} (h : a ∈ ys) : a ∈ xs ++ ys :=
1635+
theorem mem_append_right {a : α} (xs : Vector α n) {ys : Vector α m} (h : a ∈ ys) : a ∈ xs ++ ys :=
16361636
mem_append.2 (Or.inr h)
16371637

16381638
theorem not_mem_append {a : α} {xs : Vector α n} {ys : Vector α m} (h₁ : a ∉ xs) (h₂ : a ∉ ys) :
@@ -2679,7 +2679,7 @@ theorem contains_iff_exists_mem_beq [BEq α] {xs : Vector α n} {a : α} :
26792679
rcases xs with ⟨xs, rfl⟩
26802680
simp [Array.contains_iff_exists_mem_beq]
26812681

2682-
@[grind =]
2682+
@[grind]
26832683
theorem contains_iff_mem [BEq α] [LawfulBEq α] {xs : Vector α n} {a : α} :
26842684
xs.contains a ↔ a ∈ xs := by
26852685
simp

src/Std/Classes/Ord/Basic.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,10 +327,20 @@ instance LawfulEqOrd.opposite [Ord α] [OrientedOrd α] [LawfulEqOrd α] :
327327
theorem compare_eq_iff_eq {a b : α} : cmp a b = .eq ↔ a = b :=
328328
⟨LawfulEqCmp.eq_of_compare, by rintro rfl; exact ReflCmp.compare_self⟩
329329

330+
@[grind]
331+
theorem _root_.Ord.compare_eq_iff_eq [Ord α] [LawfulEqOrd α] (x y : α) :
332+
compare x y = .eq ↔ x = y :=
333+
Std.compare_eq_iff_eq
334+
330335
@[simp]
331336
theorem compare_beq_iff_eq {a b : α} : cmp a b == .eq ↔ a = b :=
332337
⟨LawfulEqCmp.eq_of_compare ∘ eq_of_beq, by rintro rfl; simp⟩
333338

339+
@[grind]
340+
theorem _root_.Ord.compare_beq_iff_eq [Ord α] [LawfulEqOrd α] (x y : α) :
341+
compare x y == .eq ↔ x = y :=
342+
Std.compare_beq_iff_eq
343+
334344
end LawfulEq
335345

336346
section LawfulBEq

src/Std/Data/DHashMap/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ theorem mem_iff_contains {a : α} : a ∈ m ↔ m.contains a :=
5151

5252
-- While setting up the API, often use this in the reverse direction,
5353
-- but prefer this direction for users.
54-
@[simp, grind =]
54+
@[simp, grind]
5555
theorem contains_iff_mem {a : α} : m.contains a ↔ a ∈ m :=
5656
Iff.rfl
5757

src/Std/Data/DHashMap/RawLemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ theorem isEmpty_insert [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} {v
102102
theorem mem_iff_contains {m : Raw α β} {a : α} :
103103
a ∈ m ↔ m.contains a := Iff.rfl
104104

105-
@[simp, grind =]
105+
@[simp, grind]
106106
theorem contains_iff_mem {m : Raw α β} {a : α} :
107107
m.contains a ↔ a ∈ m := Iff.rfl
108108

src/Std/Data/DTreeMap/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ theorem isEmpty_insert [TransCmp cmp] {k : α} {v : β k} :
4141
theorem mem_iff_contains {k : α} : k ∈ t ↔ t.contains k :=
4242
Impl.mem_iff_contains
4343

44-
@[simp, grind =]
44+
@[simp, grind]
4545
theorem contains_iff_mem {k : α} : t.contains k ↔ k ∈ t :=
4646
Impl.contains_iff_mem
4747

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ theorem isEmpty_insert [TransCmp cmp] (h : t.WF) {k : α} {v : β k} :
4242
theorem mem_iff_contains {k : α} : k ∈ t ↔ t.contains k :=
4343
Impl.mem_iff_contains
4444

45-
@[simp, grind =]
45+
@[simp, grind]
4646
theorem contains_iff_mem {k : α} : t.contains k ↔ k ∈ t :=
4747
Impl.contains_iff_mem
4848

src/Std/Data/ExtDHashMap/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ theorem not_insert_eq_empty [EquivBEq α] [LawfulHashable α] {k : α} {v : β k
5151
theorem mem_iff_contains [EquivBEq α] [LawfulHashable α] {a : α} : a ∈ m ↔ m.contains a :=
5252
Iff.rfl
5353

54-
@[simp, grind =]
54+
@[simp, grind]
5555
theorem contains_iff_mem [EquivBEq α] [LawfulHashable α] {a : α} : m.contains a ↔ a ∈ m :=
5656
Iff.rfl
5757

0 commit comments

Comments
 (0)