feat: add @[grind] annotations to contains_iff_mem lemmas (#8328)
This PR adds the `@[grind =]` attribute to all `contains_iff_mem` lemmas.
This commit is contained in:
parent
5b2e39e3b5
commit
7688fbb067
18 changed files with 18 additions and 15 deletions
|
|
@ -3740,6 +3740,7 @@ theorem contains_iff_exists_mem_beq [BEq α] {xs : Array α} {a : α} :
|
|||
rcases xs with ⟨xs⟩
|
||||
simp [List.contains_iff_exists_mem_beq]
|
||||
|
||||
@[grind =]
|
||||
theorem contains_iff_mem [BEq α] [LawfulBEq α] {xs : Array α} {a : α} :
|
||||
xs.contains a ↔ a ∈ xs := by
|
||||
simp
|
||||
|
|
|
|||
|
|
@ -2938,6 +2938,7 @@ theorem contains_iff_exists_mem_beq [BEq α] {l : List α} {a : α} :
|
|||
l.contains a ↔ ∃ a' ∈ l, a == a' := by
|
||||
induction l <;> simp_all
|
||||
|
||||
@[grind =]
|
||||
theorem contains_iff_mem [BEq α] [LawfulBEq α] {l : List α} {a : α} :
|
||||
l.contains a ↔ a ∈ l := by
|
||||
simp
|
||||
|
|
|
|||
|
|
@ -2679,6 +2679,7 @@ theorem contains_iff_exists_mem_beq [BEq α] {xs : Vector α n} {a : α} :
|
|||
rcases xs with ⟨xs, rfl⟩
|
||||
simp [Array.contains_iff_exists_mem_beq]
|
||||
|
||||
@[grind =]
|
||||
theorem contains_iff_mem [BEq α] [LawfulBEq α] {xs : Vector α n} {a : α} :
|
||||
xs.contains a ↔ a ∈ xs := by
|
||||
simp
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ theorem mem_iff_contains {a : α} : a ∈ m ↔ m.contains a :=
|
|||
|
||||
-- While setting up the API, often use this in the reverse direction,
|
||||
-- but prefer this direction for users.
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {a : α} : m.contains a ↔ a ∈ m :=
|
||||
Iff.rfl
|
||||
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ theorem isEmpty_insert [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} {v
|
|||
theorem mem_iff_contains {m : Raw α β} {a : α} :
|
||||
a ∈ m ↔ m.contains a := Iff.rfl
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {m : Raw α β} {a : α} :
|
||||
m.contains a ↔ a ∈ m := Iff.rfl
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ theorem isEmpty_insert [TransCmp cmp] {k : α} {v : β k} :
|
|||
theorem mem_iff_contains {k : α} : k ∈ t ↔ t.contains k :=
|
||||
Impl.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {k : α} : t.contains k ↔ k ∈ t :=
|
||||
Impl.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ theorem isEmpty_insert [TransCmp cmp] (h : t.WF) {k : α} {v : β k} :
|
|||
theorem mem_iff_contains {k : α} : k ∈ t ↔ t.contains k :=
|
||||
Impl.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {k : α} : t.contains k ↔ k ∈ t :=
|
||||
Impl.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ theorem not_insert_eq_empty [EquivBEq α] [LawfulHashable α] {k : α} {v : β k
|
|||
theorem mem_iff_contains [EquivBEq α] [LawfulHashable α] {a : α} : a ∈ m ↔ m.contains a :=
|
||||
Iff.rfl
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem [EquivBEq α] [LawfulHashable α] {a : α} : m.contains a ↔ a ∈ m :=
|
||||
Iff.rfl
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ theorem not_insert_eq_empty [EquivBEq α] [LawfulHashable α] {k : α} {v : β}
|
|||
theorem mem_iff_contains [EquivBEq α] [LawfulHashable α] {a : α} : a ∈ m ↔ m.contains a :=
|
||||
ExtDHashMap.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem [EquivBEq α] [LawfulHashable α] {a : α} : m.contains a ↔ a ∈ m :=
|
||||
Iff.rfl
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ theorem not_insert_eq_empty [EquivBEq α] [LawfulHashable α] {k : α} :
|
|||
theorem mem_iff_contains [EquivBEq α] [LawfulHashable α] {a : α} : a ∈ m ↔ m.contains a :=
|
||||
ExtHashMap.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem [EquivBEq α] [LawfulHashable α] {a : α} : m.contains a ↔ a ∈ m :=
|
||||
ExtHashMap.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ theorem isEmpty_insert [EquivBEq α] [LawfulHashable α] {k : α} {v : β} :
|
|||
theorem mem_iff_contains {a : α} : a ∈ m ↔ m.contains a :=
|
||||
DHashMap.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {a : α} : m.contains a ↔ a ∈ m :=
|
||||
DHashMap.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ theorem isEmpty_insert [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} {v
|
|||
theorem mem_iff_contains {a : α} : a ∈ m ↔ m.contains a :=
|
||||
DHashMap.Raw.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {a : α} : m.contains a ↔ a ∈ m :=
|
||||
DHashMap.Raw.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ theorem isEmpty_insert [EquivBEq α] [LawfulHashable α] {a : α} : (m.insert a)
|
|||
theorem mem_iff_contains {a : α} : a ∈ m ↔ m.contains a :=
|
||||
HashMap.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {a : α} : m.contains a ↔ a ∈ m :=
|
||||
HashMap.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ theorem isEmpty_insert [EquivBEq α] [LawfulHashable α] (h : m.WF) {a : α} :
|
|||
theorem mem_iff_contains {a : α} : a ∈ m ↔ m.contains a :=
|
||||
HashMap.Raw.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {a : α} : m.contains a ↔ a ∈ m :=
|
||||
HashMap.Raw.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ theorem isEmpty_insert [TransCmp cmp] {k : α} {v : β} :
|
|||
theorem mem_iff_contains {k : α} : k ∈ t ↔ t.contains k :=
|
||||
DTreeMap.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {k : α} : t.contains k ↔ k ∈ t :=
|
||||
DTreeMap.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ theorem isEmpty_insert [TransCmp cmp] (h : t.WF) {k : α} {v : β} :
|
|||
theorem mem_iff_contains {k : α} : k ∈ t ↔ t.contains k :=
|
||||
DTreeMap.Raw.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {k : α} : t.contains k ↔ k ∈ t :=
|
||||
DTreeMap.Raw.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ theorem isEmpty_insert [TransCmp cmp] {k : α} :
|
|||
theorem mem_iff_contains {k : α} : k ∈ t ↔ t.contains k :=
|
||||
TreeMap.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {k : α} : t.contains k ↔ k ∈ t :=
|
||||
TreeMap.contains_iff_mem
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ theorem isEmpty_insert [TransCmp cmp] (h : t.WF) {k : α} :
|
|||
theorem mem_iff_contains {k : α} : k ∈ t ↔ t.contains k :=
|
||||
TreeMap.Raw.mem_iff_contains
|
||||
|
||||
@[simp]
|
||||
@[simp, grind =]
|
||||
theorem contains_iff_mem {k : α} : t.contains k ↔ k ∈ t :=
|
||||
TreeMap.Raw.contains_iff_mem
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue