Skip to content

Commit 1deac47

Browse files
committed
chore: generalize a lemma about insertIfNew
1 parent 20f91b8 commit 1deac47

File tree

13 files changed

+37
-37
lines changed

13 files changed

+37
-37
lines changed

src/Std/Data/DHashMap/Internal/RawLemmas.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ theorem get_insert_self [LawfulBEq α] (h : m.1.WF) {k : α} {v : β k} :
404404

405405
theorem toList_insert_perm [EquivBEq α] [LawfulHashable α] (h : m.1.WF) {k : α} {v : β k} :
406406
(m.insert k v).1.toList.Perm (⟨k, v⟩ :: m.1.toList.filter (¬k == ·.1)) := by
407-
simp_to_model using List.Perm.trans (toListModel_insert (by wf_trivial)) <| List.insertEntry_perm_filter _ _ _
407+
simp_to_model using List.Perm.trans (toListModel_insert _) <| List.insertEntry_perm_filter _ _ _
408408

409409
theorem Const.toList_insert_perm {β : Type v} (m : Raw₀ α (fun _ => β)) [EquivBEq α] [LawfulHashable α] (h : m.1.WF) {k : α} {v : β} :
410410
(Raw.Const.toList (m.insert k v).1).Perm ((k, v) :: (Raw.Const.toList m.1).filter (¬k == ·.1)) := by
@@ -413,14 +413,14 @@ theorem Const.toList_insert_perm {β : Type v} (m : Raw₀ α (fun _ => β)) [Eq
413413
apply List.Perm.trans <| List.Const.map_insertEntry_perm_filter_map _ _ (by wf_trivial)
414414
simp
415415

416-
theorem Const.keys_insertIfNew_perm (m : Raw₀ α (fun _ => Unit)) [EquivBEq α] [LawfulHashable α] (h : m.1.WF) {k : α} :
417-
(m.insertIfNew k ()).1.keys.Perm (if m.contains k then m.1.keys else k :: m.1.keys) := by
416+
theorem keys_insertIfNew_perm [EquivBEq α] [LawfulHashable α] (h : m.1.WF) {k : α} {v : β k}:
417+
(m.insertIfNew k v).1.keys.Perm (if m.contains k then m.1.keys else k :: m.1.keys) := by
418418
simp_to_model
419419
apply List.Perm.trans
420-
· simp only [keys_eq_map]
421-
apply List.Perm.map _ <| toListModel_insertIfNew (by wf_trivial)
420+
simp only [keys_eq_map]
421+
apply List.Perm.map _ <| toListModel_insertIfNew (by wf_trivial)
422422
simp only [← keys_eq_map]
423-
apply List.Const.keys_insertEntryIfNew_perm
423+
apply List.keys_insertEntryIfNew_perm
424424

425425
@[simp]
426426
theorem get_erase [LawfulBEq α] (h : m.1.WF) {k a : α} {h'} :

src/Std/Data/DHashMap/Lemmas.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -392,9 +392,9 @@ theorem Const.toList_insert_perm {β : Type v} {m : DHashMap α (fun _ => β)} [
392392
(Const.toList (m.insert k v)).Perm (⟨k, v⟩ :: (Const.toList m).filter (¬k == ·.1)) :=
393393
Raw₀.Const.toList_insert_perm ⟨m.1, _⟩ m.2
394394

395-
theorem Const.keys_insertIfNew_perm {m : DHashMap α (fun _ => Unit)} [EquivBEq α] [LawfulHashable α] {k : α} :
396-
(m.insertIfNew k ()).keys.Perm (if k ∈ m then m.keys else k :: m.keys) :=
397-
Raw₀.Const.keys_insertIfNew_perm ⟨m.1, _⟩ m.2
395+
theorem keys_insertIfNew_perm [EquivBEq α] [LawfulHashable α] {k : α} {v : β k}:
396+
(m.insertIfNew k v).keys.Perm (if k ∈ m then m.keys else k :: m.keys) :=
397+
Raw₀.keys_insertIfNew_perm ⟨m.1, _⟩ m.2
398398

399399
@[simp, grind =]
400400
theorem get_erase [LawfulBEq α] {k a : α} {h'} :

src/Std/Data/DHashMap/RawLemmas.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -451,10 +451,10 @@ theorem Const.toList_insert_perm {β : Type v} {m : Raw α (fun _ => β)} [Equiv
451451
(Const.toList (m.insert k v)).Perm ((k, v) :: (Const.toList m).filter (¬k == ·.1)) := by
452452
simp_to_raw using Raw₀.Const.toList_insert_perm ⟨m, _⟩
453453

454-
theorem Const.keys_insertIfNew_perm {m : Raw α (fun _ => Unit)} [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} :
455-
(m.insertIfNew k ()).keys.Perm (if k ∈ m then m.keys else k :: m.keys) := by
454+
theorem keys_insertIfNew_perm [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} {v : β k} :
455+
(m.insertIfNew k v).keys.Perm (if k ∈ m then m.keys else k :: m.keys) := by
456456
simp only [Membership.mem]
457-
simp_to_raw using Raw₀.Const.keys_insertIfNew_perm ⟨m, _⟩
457+
simp_to_raw using Raw₀.keys_insertIfNew_perm ⟨m, _⟩
458458

459459
@[simp, grind =]
460460
theorem get_erase [LawfulBEq α] (h : m.WF) {k a : α} {h'} :

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -681,20 +681,20 @@ theorem Const.insert!_toList_perm {β : Type v} {t : Impl α (fun _ => β)} [BEq
681681
(Const.toList (t.insert! k v)).Perm (⟨k, v⟩ :: (Const.toList t).filter (¬k == ·.1)) := by
682682
simpa only [insert_eq_insert!] using Const.toList_insert_perm h
683683

684-
theorem Const.keys_insertIfNew_perm {t : Impl α (fun _ => Unit)} [BEq α] [TransOrd α] [LawfulBEqOrd α] (h : t.WF) {k : α} :
685-
(t.insertIfNew k () h.balanced).1.keys.Perm (if t.contains k then t.keys else k :: t.keys) := by
684+
theorem keys_insertIfNew_perm [BEq α] [TransOrd α] [LawfulBEqOrd α] (h : t.WF) {k : α} {v : β k}:
685+
(t.insertIfNew k v h.balanced).1.keys.Perm (if t.contains k then t.keys else k :: t.keys) := by
686686
simp_to_model
687687
apply List.Perm.trans
688688
simp only [List.keys_eq_map]
689689
apply List.Perm.map _ <| toListModel_insertIfNew _ h.ordered
690690
simp only [← List.keys_eq_map]
691691
apply List.Perm.trans
692-
apply List.Const.keys_insertEntryIfNew_perm
692+
apply List.keys_insertEntryIfNew_perm
693693
simp
694694

695-
theorem Const.keys_insertIfNew!_perm {t : Impl α (fun _ => Unit)} [BEq α] [TransOrd α] [LawfulBEqOrd α] (h : t.WF) {k : α} :
696-
(t.insertIfNew! k ()).keys.Perm (if t.contains k then t.keys else k :: t.keys) := by
697-
simpa only [insertIfNew_eq_insertIfNew!] using Const.keys_insertIfNew_perm h
695+
theorem keys_insertIfNew!_perm {t : Impl α β} [BEq α] [TransOrd α] [LawfulBEqOrd α] (h : t.WF) {k : α} {v : β k} :
696+
(t.insertIfNew! k v).keys.Perm (if t.contains k then t.keys else k :: t.keys) := by
697+
simpa only [insertIfNew_eq_insertIfNew!] using keys_insertIfNew_perm h
698698

699699
theorem get_insert_self [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {v : β k} :
700700
(t.insert k v h.balanced).impl.get k (contains_insert_self h) = v := by

src/Std/Data/DTreeMap/Lemmas.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -364,9 +364,9 @@ theorem Const.toList_insert_perm {β : Type v} {t : DTreeMap α (fun _ => β) cm
364364
(Const.toList (t.insert k v)).Perm (⟨k, v⟩ :: (Const.toList t).filter (¬k == ·.1)) :=
365365
Impl.Const.toList_insert_perm t.2
366366

367-
theorem Const.keys_insertIfNew_perm {t : DTreeMap α (fun _ => Unit) cmp} [BEq α] [TransCmp cmp] [LawfulBEqCmp cmp] {k : α} :
368-
(t.insertIfNew k ()).keys.Perm (if k ∈ t then t.keys else k :: t.keys) :=
369-
Impl.Const.keys_insertIfNew_perm t.2
367+
theorem keys_insertIfNew_perm [BEq α] [TransCmp cmp] [LawfulBEqCmp cmp] {k : α} {v : β k} :
368+
(t.insertIfNew k v).keys.Perm (if k ∈ t then t.keys else k :: t.keys) :=
369+
Impl.keys_insertIfNew_perm t.2
370370

371371
@[simp]
372372
theorem get_insert_self [TransCmp cmp] [LawfulEqCmp cmp] {k : α} {v : β k} :

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,9 +358,9 @@ theorem Const.toList_insert_perm {β : Type v} {t : Raw α (fun _ => β) cmp} [B
358358
(Const.toList (t.insert k v)).Perm (⟨k, v⟩ :: (Const.toList t).filter (¬k == ·.1)) :=
359359
Impl.Const.insert!_toList_perm h
360360

361-
theorem Const.keys_insertIfNew_perm {t : Raw α (fun _ => Unit) cmp} [BEq α] [TransCmp cmp] [LawfulBEqCmp cmp] (h : t.WF) {k : α} :
362-
(t.insertIfNew k ()).keys.Perm (if k ∈ t then t.keys else k :: t.keys) :=
363-
Impl.Const.keys_insertIfNew!_perm h
361+
theorem keys_insertIfNew_perm [BEq α] [TransCmp cmp] [LawfulBEqCmp cmp] (h : t.WF) {k : α} {v : β k} :
362+
(t.insertIfNew k v).keys.Perm (if k ∈ t then t.keys else k :: t.keys) :=
363+
Impl.keys_insertIfNew!_perm h
364364

365365
@[grind =] theorem get_insert [TransCmp cmp] [LawfulEqCmp cmp] (h : t.WF) {k a : α} {v : β k} {h₁} :
366366
(t.insert k v).get a h₁ =

src/Std/Data/HashMap/Lemmas.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,9 @@ theorem toList_insert_perm [EquivBEq α] [LawfulHashable α] {k : α} {v : β} :
318318
(m.insert k v).toList.Perm (⟨k, v⟩ :: m.toList.filter (¬k == ·.1)) :=
319319
DHashMap.Const.toList_insert_perm
320320

321-
theorem keys_insertIfNew_perm {m : DHashMap α (fun _ => Unit)} [EquivBEq α] [LawfulHashable α] {k : α} :
322-
(m.insertIfNew k ()).keys.Perm (if k ∈ m then m.keys else k :: m.keys) :=
323-
DHashMap.Const.keys_insertIfNew_perm
321+
theorem keys_insertIfNew_perm [EquivBEq α] [LawfulHashable α] {k : α} {v : β} :
322+
(m.insertIfNew k v).keys.Perm (if k ∈ m then m.keys else k :: m.keys) :=
323+
DHashMap.keys_insertIfNew_perm
324324

325325
@[simp]
326326
theorem getElem_insert_self [EquivBEq α] [LawfulHashable α] {k : α} {v : β} :

src/Std/Data/HashMap/RawLemmas.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -327,9 +327,9 @@ theorem toList_insert_perm [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α}
327327
(m.insert k v).toList.Perm (⟨k, v⟩ :: m.toList.filter (¬k == ·.1)) :=
328328
DHashMap.Raw.Const.toList_insert_perm h.out
329329

330-
theorem keys_insertIfNew_perm {m : Raw α Unit} [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} :
331-
(m.insertIfNew k ()).keys.Perm (if k ∈ m then m.keys else k :: m.keys) :=
332-
DHashMap.Raw.Const.keys_insertIfNew_perm h.out
330+
theorem keys_insertIfNew_perm [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} {v : β} :
331+
(m.insertIfNew k v).keys.Perm (if k ∈ m then m.keys else k :: m.keys) :=
332+
DHashMap.Raw.keys_insertIfNew_perm h.out
333333

334334
@[simp]
335335
theorem getElem_insert_self [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} {v : β} :

src/Std/Data/HashSet/RawLemmas.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ theorem get?_eq_some [LawfulBEq α] (h : m.WF) {k : α} (h' : k ∈ m) :
302302

303303
theorem toList_insert_perm [EquivBEq α] [LawfulHashable α] (h : m.WF) {k : α} :
304304
(m.insert k).toList.Perm (if k ∈ m then m.toList else k :: m.toList) :=
305-
HashMap.Raw.keys_insertIfNew_perm h.out
305+
HashMap.Raw.keys_insertIfNew_perm (v := ()) h.out
306306

307307
@[simp, grind =]
308308
theorem get_erase [EquivBEq α] [LawfulHashable α] (h : m.WF) {k a : α} {h'} :

src/Std/Data/Internal/List/Associative.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6964,9 +6964,9 @@ theorem Const.map_insertEntry_perm_filter_map {β : Type v} [BEq α] [EquivBEq
69646964
simp [heq]
69656965
apply ih hl.1
69666966

6967-
theorem Const.keys_insertEntryIfNew_perm [BEq α] [EquivBEq α]
6968-
(k : α) {l : List ((_ : α) × Unit)} :
6969-
(keys <| insertEntryIfNew k () l).Perm <| if (containsKey k l) then keys l else k :: keys l := by
6967+
theorem keys_insertEntryIfNew_perm [BEq α] [EquivBEq α]
6968+
(k : α) (v : β k) {l : List ((a : α) × β a)} :
6969+
(keys <| insertEntryIfNew k v l).Perm <| if (containsKey k l) then keys l else k :: keys l := by
69706970
simp only [insertEntryIfNew]
69716971
by_cases h : containsKey k l <;> simp [h]
69726972

0 commit comments

Comments
 (0)