@@ -1409,27 +1409,58 @@ theorem union_insert_right_eq_insert_union [EquivBEq α] [LawfulHashable α] {p
14091409 simp only [union, insert, ExtDHashMap.union_eq, mk.injEq]
14101410 exact ExtDHashMap.union_insert_right_eq_insert_union
14111411
1412+ /- getElem? -/
1413+ theorem getElem ?_union [EquivBEq α] [LawfulHashable α] {k : α} :
1414+ (m₁ ∪ m₂)[k]? = (m₂[k]?).or (m₁[k]?) :=
1415+ ExtDHashMap.Const.get?_union
1416+
1417+ theorem getElem ?_union_of_not_mem_left [EquivBEq α] [LawfulHashable α]
1418+ {k : α} (not_mem : ¬k ∈ m₁) :
1419+ (m₁ ∪ m₂)[k]? = m₂[k]? :=
1420+ ExtDHashMap.Const.get?_union_of_not_mem_left not_mem
1421+
1422+ theorem getElem ?_union_of_not_mem_right [EquivBEq α] [LawfulHashable α]
1423+ {k : α} (not_mem : ¬k ∈ m₂) :
1424+ (m₁ ∪ m₂)[k]? = m₁[k]? :=
1425+ ExtDHashMap.Const.get?_union_of_not_mem_right not_mem
1426+
14121427/- get? -/
1428+ @[deprecated getElem?_union (since := " 2025-12-10" )]
14131429theorem get ?_union [EquivBEq α] [LawfulHashable α] {k : α} :
14141430 (m₁ ∪ m₂).get? k = (m₂.get? k).or (m₁.get? k) :=
14151431 ExtDHashMap.Const.get?_union
14161432
1433+ @[deprecated getElem?_union_of_not_mem_left (since := " 2025-12-10" )]
14171434theorem get ?_union_of_not_mem_left [EquivBEq α] [LawfulHashable α]
14181435 {k : α} (not_mem : ¬k ∈ m₁) :
14191436 (m₁ ∪ m₂).get? k = m₂.get? k :=
14201437 ExtDHashMap.Const.get?_union_of_not_mem_left not_mem
14211438
1439+ @[deprecated getElem?_union_of_not_mem_right (since := " 2025-12-10" )]
14221440theorem get ?_union_of_not_mem_right [EquivBEq α] [LawfulHashable α]
14231441 {k : α} (not_mem : ¬k ∈ m₂) :
14241442 (m₁ ∪ m₂).get? k = m₁.get? k :=
14251443 ExtDHashMap.Const.get?_union_of_not_mem_right not_mem
14261444
1445+ /- getElem -/
1446+ theorem getElem_union_of_mem_right [EquivBEq α] [LawfulHashable α]
1447+ {k : α} (mem : k ∈ m₂) :
1448+ (m₁ ∪ m₂)[k]'(mem_union_of_right mem) = m₂[k]'mem :=
1449+ ExtDHashMap.Const.get_union_of_mem_right mem
1450+
1451+ theorem getElem_union_of_not_mem_left [EquivBEq α] [LawfulHashable α]
1452+ {k : α} (not_mem : ¬k ∈ m₁) {h'} :
1453+ (m₁ ∪ m₂)[k]'h' = m₂[k]'(mem_of_mem_union_of_not_mem_left h' not_mem) :=
1454+ ExtDHashMap.Const.get_union_of_not_mem_left not_mem (h' := h')
1455+
14271456/- get -/
1457+ @[deprecated getElem_union_of_mem_right (since := " 2025-12-10" )]
14281458theorem get_union_of_mem_right [EquivBEq α] [LawfulHashable α]
14291459 {k : α} (mem : k ∈ m₂) :
14301460 (m₁ ∪ m₂).get k (mem_union_of_right mem) = m₂.get k mem :=
14311461 ExtDHashMap.Const.get_union_of_mem_right mem
14321462
1463+ @[deprecated getElem_union_of_not_mem_left (since := " 2025-12-10" )]
14331464theorem get_union_of_not_mem_left [EquivBEq α] [LawfulHashable α]
14341465 {k : α} (not_mem : ¬k ∈ m₁) {h'} :
14351466 (m₁ ∪ m₂).get k h' = m₂.get k (mem_of_mem_union_of_not_mem_left h' not_mem) :=
@@ -1450,16 +1481,33 @@ theorem getD_union_of_not_mem_right [EquivBEq α] [LawfulHashable α]
14501481 (m₁ ∪ m₂).getD k fallback = m₁.getD k fallback :=
14511482 ExtDHashMap.Const.getD_union_of_not_mem_right not_mem
14521483
1484+ /- getElem! -/
1485+ theorem getElem !_union [EquivBEq α] [LawfulHashable α] {k : α} [Inhabited β] :
1486+ (m₁ ∪ m₂)[k]! = m₂.getD k (m₁[k]!) :=
1487+ ExtDHashMap.Const.get!_union
1488+
1489+ theorem getElem !_union_of_not_mem_left [EquivBEq α] [LawfulHashable α]
1490+ {k : α} [Inhabited β] (not_mem : ¬k ∈ m₁) :
1491+ (m₁ ∪ m₂)[k]! = m₂[k]! :=
1492+ ExtDHashMap.Const.get!_union_of_not_mem_left not_mem
1493+
1494+ theorem getElem !_union_of_not_mem_right [EquivBEq α] [LawfulHashable α] {k : α} [Inhabited β] (not_mem : ¬k ∈ m₂) :
1495+ (m₁ ∪ m₂)[k]! = m₁[k]! :=
1496+ ExtDHashMap.Const.get!_union_of_not_mem_right not_mem
1497+
14531498/- get! -/
1499+ @[deprecated getElem!_union (since := " 2025-12-10" )]
14541500theorem get !_union [EquivBEq α] [LawfulHashable α] {k : α} [Inhabited β] :
14551501 (m₁ ∪ m₂).get! k = m₂.getD k (m₁.get! k) :=
14561502 ExtDHashMap.Const.get!_union
14571503
1504+ @[deprecated getElem!_union_of_not_mem_left (since := " 2025-12-10" )]
14581505theorem get !_union_of_not_mem_left [EquivBEq α] [LawfulHashable α]
14591506 {k : α} [Inhabited β] (not_mem : ¬k ∈ m₁) :
14601507 (m₁ ∪ m₂).get! k = m₂.get! k :=
14611508 ExtDHashMap.Const.get!_union_of_not_mem_left not_mem
14621509
1510+ @[deprecated getElem!_union_of_not_mem_right (since := " 2025-12-10" )]
14631511theorem get !_union_of_not_mem_right [EquivBEq α] [LawfulHashable α] {k : α} [Inhabited β] (not_mem : ¬k ∈ m₂) :
14641512 (m₁ ∪ m₂).get! k = m₁.get! k :=
14651513 ExtDHashMap.Const.get!_union_of_not_mem_right not_mem
@@ -1579,33 +1627,62 @@ theorem not_mem_inter_of_not_mem_right [EquivBEq α] [LawfulHashable α] {k : α
15791627 k ∉ m₁ ∩ m₂ :=
15801628 ExtDHashMap.not_mem_inter_of_not_mem_right not_mem
15811629
1630+ /- getElem? -/
1631+ theorem getElem ?_inter [EquivBEq α] [LawfulHashable α] {k : α} :
1632+ (m₁ ∩ m₂)[k]? = if k ∈ m₂ then m₁[k]? else none :=
1633+ ExtDHashMap.Const.get?_inter
1634+
1635+ theorem getElem ?_inter_of_mem_right [EquivBEq α] [LawfulHashable α]
1636+ {k : α} (mem : k ∈ m₂) :
1637+ (m₁ ∩ m₂)[k]? = m₁[k]? :=
1638+ ExtDHashMap.Const.get?_inter_of_mem_right mem
1639+
1640+ theorem getElem ?_inter_of_not_mem_left [EquivBEq α] [LawfulHashable α]
1641+ {k : α} (not_mem : k ∉ m₁) :
1642+ (m₁ ∩ m₂)[k]? = none :=
1643+ ExtDHashMap.Const.get?_inter_of_not_mem_left not_mem
1644+
1645+ theorem getElem ?_inter_of_not_mem_right [EquivBEq α] [LawfulHashable α]
1646+ {k : α} (not_mem : k ∉ m₂) :
1647+ (m₁ ∩ m₂)[k]? = none :=
1648+ ExtDHashMap.Const.get?_inter_of_not_mem_right not_mem
1649+
15821650/- get? -/
1651+ @[deprecated getElem?_inter (since := " 2025-12-10" )]
15831652theorem get ?_inter [EquivBEq α] [LawfulHashable α] {k : α} :
1584- (m₁ ∩ m₂).get? k =
1585- if k ∈ m₂ then m₁.get? k else none :=
1653+ (m₁ ∩ m₂).get? k = if k ∈ m₂ then m₁.get? k else none :=
15861654 ExtDHashMap.Const.get?_inter
15871655
1656+ @[deprecated getElem?_inter_of_mem_right (since := " 2025-12-10" )]
15881657theorem get ?_inter_of_mem_right [EquivBEq α] [LawfulHashable α]
15891658 {k : α} (mem : k ∈ m₂) :
15901659 (m₁ ∩ m₂).get? k = m₁.get? k :=
15911660 ExtDHashMap.Const.get?_inter_of_mem_right mem
15921661
1662+ @[deprecated getElem?_inter_of_not_mem_left (since := " 2025-12-10" )]
15931663theorem get ?_inter_of_not_mem_left [EquivBEq α] [LawfulHashable α]
15941664 {k : α} (not_mem : k ∉ m₁) :
15951665 (m₁ ∩ m₂).get? k = none :=
15961666 ExtDHashMap.Const.get?_inter_of_not_mem_left not_mem
15971667
1668+ @[deprecated getElem?_inter_of_not_mem_right (since := " 2025-12-10" )]
15981669theorem get ?_inter_of_not_mem_right [EquivBEq α] [LawfulHashable α]
15991670 {k : α} (not_mem : k ∉ m₂) :
16001671 (m₁ ∩ m₂).get? k = none :=
16011672 ExtDHashMap.Const.get?_inter_of_not_mem_right not_mem
16021673
1603- /- get -/
1674+ /- getElem -/
16041675@[simp]
1676+ theorem getElem_inter [EquivBEq α] [LawfulHashable α]
1677+ {k : α} {h_mem : k ∈ m₁ ∩ m₂} :
1678+ (m₁ ∩ m₂)[k]'h_mem = m₁[k]'(mem_inter_iff.1 h_mem).1 :=
1679+ ExtDHashMap.Const.get_inter (h_mem := h_mem)
1680+
1681+ /- get -/
1682+ @[deprecated getElem_inter (since := " 2025-12-10" )]
16051683theorem get_inter [EquivBEq α] [LawfulHashable α]
16061684 {k : α} {h_mem : k ∈ m₁ ∩ m₂} :
1607- (m₁ ∩ m₂).get k h_mem =
1608- m₁.get k (mem_inter_iff.1 h_mem).1 :=
1685+ (m₁ ∩ m₂).get k h_mem = m₁.get k (mem_inter_iff.1 h_mem).1 :=
16091686 ExtDHashMap.Const.get_inter
16101687
16111688/- getD -/
@@ -1629,22 +1706,45 @@ theorem getD_inter_of_not_mem_left [EquivBEq α] [LawfulHashable α]
16291706 (m₁ ∩ m₂).getD k fallback = fallback :=
16301707 ExtDHashMap.Const.getD_inter_of_not_mem_left not_mem
16311708
1709+ /- getElem! -/
1710+ theorem getElem !_inter [EquivBEq α] [LawfulHashable α] {k : α} [Inhabited β] :
1711+ (m₁ ∩ m₂)[k]! = if k ∈ m₂ then m₁[k]! else default :=
1712+ ExtDHashMap.Const.get!_inter
1713+
1714+ theorem getElem !_inter_of_mem_right [EquivBEq α] [LawfulHashable α]
1715+ {k : α} [Inhabited β] (mem : k ∈ m₂) :
1716+ (m₁ ∩ m₂)[k]! = m₁[k]! :=
1717+ ExtDHashMap.Const.get!_inter_of_mem_right mem
1718+
1719+ theorem getElem !_inter_of_not_mem_right [EquivBEq α] [LawfulHashable α]
1720+ {k : α} [Inhabited β] (not_mem : k ∉ m₂) :
1721+ (m₁ ∩ m₂)[k]! = default :=
1722+ ExtDHashMap.Const.get!_inter_of_not_mem_right not_mem
1723+
1724+ theorem getElem !_inter_of_not_mem_left [EquivBEq α] [LawfulHashable α]
1725+ {k : α} [Inhabited β] (not_mem : k ∉ m₁) :
1726+ (m₁ ∩ m₂)[k]! = default :=
1727+ ExtDHashMap.Const.get!_inter_of_not_mem_left not_mem
1728+
16321729/- get! -/
1730+ @[deprecated getElem!_inter (since := " 2025-12-10" )]
16331731theorem get !_inter [EquivBEq α] [LawfulHashable α] {k : α} [Inhabited β] :
1634- (m₁ ∩ m₂).get! k =
1635- if k ∈ m₂ then m₁.get! k else default :=
1732+ (m₁ ∩ m₂).get! k = if k ∈ m₂ then m₁.get! k else default :=
16361733 ExtDHashMap.Const.get!_inter
16371734
1735+ @[deprecated getElem!_inter_of_mem_right (since := " 2025-12-10" )]
16381736theorem get !_inter_of_mem_right [EquivBEq α] [LawfulHashable α]
16391737 {k : α} [Inhabited β] (mem : k ∈ m₂) :
16401738 (m₁ ∩ m₂).get! k = m₁.get! k :=
16411739 ExtDHashMap.Const.get!_inter_of_mem_right mem
16421740
1741+ @[deprecated getElem!_inter_of_not_mem_right (since := " 2025-12-10" )]
16431742theorem get !_inter_of_not_mem_right [EquivBEq α] [LawfulHashable α]
16441743 {k : α} [Inhabited β] (not_mem : k ∉ m₂) :
16451744 (m₁ ∩ m₂).get! k = default :=
16461745 ExtDHashMap.Const.get!_inter_of_not_mem_right not_mem
16471746
1747+ @[deprecated getElem!_inter_of_not_mem_left (since := " 2025-12-10" )]
16481748theorem get !_inter_of_not_mem_left [EquivBEq α] [LawfulHashable α]
16491749 {k : α} [Inhabited β] (not_mem : k ∉ m₁) :
16501750 (m₁ ∩ m₂).get! k = default :=
@@ -2490,12 +2590,12 @@ grind_pattern size_filter_le_size => (m.filter f).size
24902590
24912591theorem size_filter_eq_size_iff [EquivBEq α] [LawfulHashable α]
24922592 {f : α → β → Bool} :
2493- (m.filter f).size = m.size ↔ ∀ k h, f (m.getKey k h) (m.get k h) :=
2593+ (m.filter f).size = m.size ↔ ∀ k h, f (m.getKey k h) (m[k]' h) :=
24942594 ExtDHashMap.Const.size_filter_eq_size_iff
24952595
24962596theorem filter_eq_self_iff [EquivBEq α] [LawfulHashable α]
24972597 {f : α → β → Bool} :
2498- m.filter f = m ↔ ∀ k h, f (m.getKey k h) (m.get k h) :=
2598+ m.filter f = m ↔ ∀ k h, f (m.getKey k h) (m[k]' h) :=
24992599 ext_iff.trans ExtDHashMap.Const.filter_eq_self_iff
25002600
25012601theorem getElem ?_filter [EquivBEq α] [LawfulHashable α]
0 commit comments