Skip to content

Commit 2b6653b

Browse files
committed
feat: add @[grind ext] attributes for extensional maps
1 parent 1981c62 commit 2b6653b

File tree

7 files changed

+23
-6
lines changed

7 files changed

+23
-6
lines changed

src/Std/Data/ExtDHashMap/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2791,7 +2791,7 @@ section Ext
27912791

27922792
variable {m₁ m₂ : Std.ExtDHashMap α β}
27932793

2794-
@[ext]
2794+
@[ext, grind ext]
27952795
theorem ext_get? [LawfulBEq α] {m₁ m₂ : Std.ExtDHashMap α β} (h : ∀ k, m₁.get? k = m₂.get? k) : m₁ = m₂ :=
27962796
m₁.inductionOn₂ m₂ (fun _ _ h => sound (.of_forall_get?_eq h)) h
27972797

src/Std/Data/ExtDTreeMap/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4369,7 +4369,7 @@ section Ext
43694369

43704370
variable {t₁ t₂ : ExtDTreeMap α β cmp}
43714371

4372-
@[ext]
4372+
@[ext, grind ext]
43734373
theorem ext_get? [TransCmp cmp] [LawfulEqCmp cmp] {t₁ t₂ : ExtDTreeMap α β cmp}
43744374
(h : ∀ k, t₁.get? k = t₂.get? k) : t₁ = t₂ :=
43754375
t₁.inductionOn₂ t₂ (fun _ _ h => sound (.of_forall_get?_eq h)) h

src/Std/Data/ExtHashMap/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1705,7 +1705,7 @@ theorem ext_getKey_getElem? [EquivBEq α] [LawfulHashable α]
17051705
(hv : ∀ k : α, m₁[k]? = m₂[k]?) : m₁ = m₂ :=
17061706
ext (ExtDHashMap.Const.ext_getKey_get? hk hv)
17071707

1708-
@[ext]
1708+
@[ext, grind ext]
17091709
theorem ext_getElem? [LawfulBEq α] {m₁ m₂ : ExtHashMap α β}
17101710
(h : ∀ k : α, m₁[k]? = m₂[k]?) : m₁ = m₂ :=
17111711
ext (ExtDHashMap.Const.ext_get? h)

src/Std/Data/ExtHashSet/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ theorem ext_contains [LawfulBEq α] {m₁ m₂ : ExtHashSet α}
678678
(h : ∀ k, m₁.contains k = m₂.contains k) : m₁ = m₂ :=
679679
ext (ExtHashMap.ext_contains_unit h)
680680

681-
@[ext]
681+
@[ext, grind ext]
682682
theorem ext_mem [LawfulBEq α] {m₁ m₂ : ExtHashSet α} (h : ∀ k, k ∈ m₁ ↔ k ∈ m₂) : m₁ = m₂ :=
683683
ext (ExtHashMap.ext_mem_unit h)
684684

src/Std/Data/ExtTreeMap/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3021,7 +3021,7 @@ theorem ext_getKey_getElem? [TransCmp cmp] {t₁ t₂ : ExtTreeMap α β cmp}
30213021
(hv : ∀ k : α, t₁[k]? = t₂[k]?) : t₁ = t₂ :=
30223022
ext (ExtDTreeMap.Const.ext_getKey_get? hk hv)
30233023

3024-
@[ext]
3024+
@[ext, grind ext]
30253025
theorem ext_getElem? [TransCmp cmp] [LawfulEqCmp cmp]
30263026
{t₁ t₂ : ExtTreeMap α β cmp}
30273027
(h : ∀ k : α, t₁[k]? = t₂[k]?) : t₁ = t₂ :=

src/Std/Data/ExtTreeSet/Lemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1554,7 +1554,7 @@ theorem ext_contains [TransCmp cmp] [LawfulEqCmp cmp]
15541554
(h : ∀ k, t₁.contains k = t₂.contains k) : t₁ = t₂ :=
15551555
ext (ExtTreeMap.ext_contains_unit h)
15561556

1557-
@[ext]
1557+
@[ext, grind ext]
15581558
theorem ext_mem [TransCmp cmp] [LawfulEqCmp cmp]
15591559
{t₁ t₂ : ExtTreeSet α cmp}
15601560
(h : ∀ k, k ∈ t₁ ↔ k ∈ t₂) : t₁ = t₂ :=
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import Std
2+
3+
open Std
4+
5+
example {cmp : α → α → Ordering} [TransCmp cmp] (m : ExtTreeSet α cmp) (x : α) :
6+
(m.insert x).erase x = m.erase x := by
7+
grind
8+
9+
example (m : ExtTreeSet Nat compare) (x : Nat) : (m.insert x).erase x = m.erase x := by
10+
grind
11+
12+
example [BEq α] [EquivBEq α] [Hashable α] [LawfulHashable α] (m : ExtHashSet α) (x : α) :
13+
(m.insert x).erase x = m.erase x := by
14+
grind
15+
16+
example (m : ExtHashMap Int Int) (x y : Int) : (m.insert x y).erase x = m.erase x := by
17+
grind

0 commit comments

Comments
 (0)