@@ -5948,6 +5948,94 @@ theorem isSome_minKey?_insert! [TransOrd α] (h : t.WF) {k v} :
59485948 (t.insert! k v).minKey?.isSome := by
59495949 simpa only [insert_eq_insert!] using isSome_minKey?_insert h
59505950
5951+ theorem minKey_insert_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) :
5952+ (t.insert k v h.balanced).impl.minKey (isEmpty_insert h) = k := by
5953+ revert he
5954+ simp_to_model [isEmpty, insert, minKey] using List.minKey_insertEntry_of_isEmpty
5955+
5956+ theorem minKey_insert!_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) :
5957+ (t.insert! k v).minKey (isEmpty_insert! h) = k := by
5958+ simpa only [insert_eq_insert!] using minKey_insert_of_isEmpty h he
5959+
5960+ theorem minKey?_insert_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) :
5961+ (t.insert k v h.balanced).impl.minKey? = some k := by
5962+ revert he
5963+ simp_to_model [isEmpty, insert, minKey?] using List.minKey?_insertEntry_of_isEmpty
5964+
5965+ theorem minKey?_insert!_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) :
5966+ (t.insert! k v).minKey? = some k := by
5967+ simpa only [insert_eq_insert!] using minKey?_insert_of_isEmpty h he
5968+
5969+ theorem minKey!_insert_of_isEmpty [TransOrd α] [Inhabited α] (h : t.WF) {k v} (he : t.isEmpty) :
5970+ (t.insert k v h.balanced).impl.minKey! = k := by
5971+ revert he
5972+ simp_to_model [isEmpty, insert, minKey!]
5973+ intro he
5974+ apply List.minKey!_insertEntry_of_isEmpty
5975+ · wf_trivial
5976+ · exact he
5977+
5978+ theorem minKey!_insert!_of_isEmpty [TransOrd α] [Inhabited α] (h : t.WF) {k v} (he : t.isEmpty) :
5979+ (t.insert! k v).minKey! = k := by
5980+ simpa only [insert_eq_insert!] using minKey!_insert_of_isEmpty h he
5981+
5982+ theorem minKeyD_insert_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) {fallback : α} :
5983+ (t.insert k v h.balanced).impl.minKeyD fallback = k := by
5984+ revert he
5985+ simp_to_model [isEmpty, insert, minKeyD]
5986+ intro he
5987+ apply List.minKeyD_insertEntry_of_isEmpty
5988+ · wf_trivial
5989+ · exact he
5990+
5991+ theorem minKeyD_insert!_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) {fallback : α} :
5992+ (t.insert! k v).minKeyD fallback = k := by
5993+ simpa only [insert_eq_insert!] using minKeyD_insert_of_isEmpty h he
5994+
5995+ theorem minKey_insertIfNew_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) :
5996+ (t.insertIfNew k v h.balanced).impl.minKey (isEmpty_insertIfNew h) = k := by
5997+ revert he
5998+ simp_to_model [isEmpty, insertIfNew, minKey] using List.minKey_insertEntryIfNew_of_isEmpty
5999+
6000+ theorem minKey_insertIfNew!_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) :
6001+ (t.insertIfNew! k v).minKey (isEmpty_insertIfNew! h) = k := by
6002+ simpa only [insertIfNew_eq_insertIfNew!] using minKey_insertIfNew_of_isEmpty h he
6003+
6004+ theorem minKey?_insertIfNew_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) :
6005+ (t.insertIfNew k v h.balanced).impl.minKey? = some k := by
6006+ revert he
6007+ simp_to_model [isEmpty, insertIfNew, minKey?] using List.minKey?_insertEntryIfNew_of_isEmpty
6008+
6009+ theorem minKey?_insertIfNew!_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) :
6010+ (t.insertIfNew! k v).minKey? = some k := by
6011+ simpa only [insertIfNew_eq_insertIfNew!] using minKey?_insertIfNew_of_isEmpty h he
6012+
6013+ theorem minKey!_insertIfNew_of_isEmpty [TransOrd α] [Inhabited α] (h : t.WF) {k v} (he : t.isEmpty) :
6014+ (t.insertIfNew k v h.balanced).impl.minKey! = k := by
6015+ revert he
6016+ simp_to_model [isEmpty, insertIfNew, minKey!]
6017+ intro he
6018+ apply List.minKey!_insertEntryIfNew_of_isEmpty
6019+ · wf_trivial
6020+ · exact he
6021+
6022+ theorem minKey!_insertIfNew!_of_isEmpty [TransOrd α] [Inhabited α] (h : t.WF) {k v} (he : t.isEmpty) :
6023+ (t.insertIfNew! k v).minKey! = k := by
6024+ simpa only [insertIfNew_eq_insertIfNew!] using minKey!_insertIfNew_of_isEmpty h he
6025+
6026+ theorem minKeyD_insertIfNew_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) {fallback : α} :
6027+ (t.insertIfNew k v h.balanced).impl.minKeyD fallback = k := by
6028+ revert he
6029+ simp_to_model [isEmpty, insertIfNew, minKeyD]
6030+ intro he
6031+ apply List.minKeyD_insertEntryIfNew_of_isEmpty
6032+ · wf_trivial
6033+ · exact he
6034+
6035+ theorem minKeyD_insertIfNew!_of_isEmpty [TransOrd α] (h : t.WF) {k v} (he : t.isEmpty) {fallback : α} :
6036+ (t.insertIfNew! k v).minKeyD fallback = k := by
6037+ simpa only [insertIfNew_eq_insertIfNew!] using minKeyD_insertIfNew_of_isEmpty h he
6038+
59516039theorem minKey?_insert_le_minKey? [TransOrd α] (h : t.WF) {k v km kmi} :
59526040 (hkm : t.minKey? = some km) →
59536041 (hkmi : (t.insert k v h.balanced |>.impl.minKey? |>.get <| isSome_minKey?_insert h) = kmi) →
0 commit comments