Documentation

Std.Data.DTreeMap.Internal.Lemmas

Internal lemmas about the tree map #

This file contains internal lemmas about Std.DTreeMap.Internal.Impl. Users of the tree map should not rely on the contents of this file.

Internal implementation detail of the tree map

Equations

Internal implementation detail of the tree map

Equations

Internal implementation detail of the tree map

Equations
  • One or more equations did not get rendered due to their size.
theorem Std.DTreeMap.Internal.Impl.isEmpty_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.isEmpty = false
theorem Std.DTreeMap.Internal.Impl.isEmpty_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_congr {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k k' : α} (hab : compare k k' = Ordering.eq) :
theorem Std.DTreeMap.Internal.Impl.mem_congr {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k k' : α} (hab : compare k k' = Ordering.eq) :
k t k' t
theorem Std.DTreeMap.Internal.Impl.contains_empty {α : Type u} {β : αType v} {instOrd : Ord α} {a : α} :
theorem Std.DTreeMap.Internal.Impl.not_mem_empty {α : Type u} {β : αType v} {instOrd : Ord α} {a : α} :
theorem Std.DTreeMap.Internal.Impl.contains_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.not_mem_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} :
t.isEmpty = true¬a t
theorem Std.DTreeMap.Internal.Impl.isEmpty_eq_false_iff_exists_contains_eq_true {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.isEmpty_eq_false_iff_exists_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.isEmpty_eq_false_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} (hc : contains a t = true) :
theorem Std.DTreeMap.Internal.Impl.isEmpty_iff_forall_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
t.isEmpty = true ∀ (a : α), contains a t = false
theorem Std.DTreeMap.Internal.Impl.isEmpty_iff_forall_not_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
t.isEmpty = true ∀ (a : α), ¬a t
theorem Std.DTreeMap.Internal.Impl.contains_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.mem_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
a (insert k v t ).impl compare k a = Ordering.eq a t
theorem Std.DTreeMap.Internal.Impl.mem_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
contains k (insert k v t ).impl = true
theorem Std.DTreeMap.Internal.Impl.contains_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.mem_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
k (insert k v t ).impl
theorem Std.DTreeMap.Internal.Impl.mem_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
k insert! k v t
theorem Std.DTreeMap.Internal.Impl.contains_of_contains_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
contains a (insert k v t ).impl = truecompare k a Ordering.eqcontains a t = true
theorem Std.DTreeMap.Internal.Impl.contains_of_contains_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
a (insert k v t ).implcompare k a Ordering.eqa t
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
a insert! k v tcompare k a Ordering.eqa t
theorem Std.DTreeMap.Internal.Impl.size_empty {α : Type u} {β : αType v} :
theorem Std.DTreeMap.Internal.Impl.isEmpty_eq_size_eq_zero {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} (h : t.WF) :
t.isEmpty = (t.size == 0)
theorem Std.DTreeMap.Internal.Impl.size_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.size = if contains k t = true then t.size else t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.size_le_size_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
t.size (insert k v t ).impl.size
theorem Std.DTreeMap.Internal.Impl.size_le_size_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
t.size (insert! k v t).size
theorem Std.DTreeMap.Internal.Impl.size_insert_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.size t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_insert!_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).size t.size + 1
theorem Std.DTreeMap.Internal.Impl.erase_empty {α : Type u} {β : αType v} {instOrd : Ord α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.erase!_empty {α : Type u} {β : αType v} {instOrd : Ord α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.isEmpty_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
(erase k t ).impl.isEmpty = (t.isEmpty || decide (t.size = 1) && contains k t)
theorem Std.DTreeMap.Internal.Impl.isEmpty_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
theorem Std.DTreeMap.Internal.Impl.isEmpty_eq_isEmpty_erase_and_not_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (k : α) :
t.isEmpty = ((erase k t ).impl.isEmpty && !contains k t)
theorem Std.DTreeMap.Internal.Impl.isEmpty_eq_isEmpty_erase!_and_not_containsKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (k : α) :
theorem Std.DTreeMap.Internal.Impl.isEmpty_eq_false_of_isEmpty_erase_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.isEmpty_eq_false_of_isEmpty_erase!_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.contains_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.contains_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.mem_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
a (erase k t ).impl compare k a Ordering.eq a t
theorem Std.DTreeMap.Internal.Impl.mem_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.contains_of_contains_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
contains a (erase k t ).impl = truecontains a t = true
theorem Std.DTreeMap.Internal.Impl.contains_of_contains_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
contains a (erase! k t) = truecontains a t = true
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
a (erase k t ).impla t
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
a erase! k ta t
theorem Std.DTreeMap.Internal.Impl.size_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
(erase k t ).impl.size = if contains k t = true then t.size - 1 else t.size
theorem Std.DTreeMap.Internal.Impl.size_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
theorem Std.DTreeMap.Internal.Impl.size_erase_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
(erase k t ).impl.size t.size
theorem Std.DTreeMap.Internal.Impl.size_erase!_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
theorem Std.DTreeMap.Internal.Impl.size_le_size_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
t.size (erase k t ).impl.size + 1
theorem Std.DTreeMap.Internal.Impl.size_le_size_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
t.size (erase! k t).size + 1
theorem Std.DTreeMap.Internal.Impl.containsThenInsert_fst {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.containsThenInsert!_fst {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.containsThenInsert_snd {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(containsThenInsert k v t ).snd.impl = (insert k v t ).impl
theorem Std.DTreeMap.Internal.Impl.containsThenInsert!_snd {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.containsThenInsertIfNew_fst {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.containsThenInsertIfNew!_fst {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.containsThenInsertIfNew_snd {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.containsThenInsertIfNew!_snd {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.isEmpty_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.isEmpty_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
contains a (insertIfNew k v t ).impl = (k == a || contains a t)
theorem Std.DTreeMap.Internal.Impl.contains_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
contains a (insertIfNew! k v t) = (k == a || contains a t)
theorem Std.DTreeMap.Internal.Impl.mem_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.mem_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_insertIfNew_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_insertIfNew!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.mem_insertIfNew_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
k (insertIfNew k v t ).impl
theorem Std.DTreeMap.Internal.Impl.mem_insertIfNew!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_of_contains_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_of_contains_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
a (insertIfNew k v t ).implcompare k a Ordering.eqa t
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
a insertIfNew! k v tcompare k a Ordering.eqa t
theorem Std.DTreeMap.Internal.Impl.size_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] {k : α} (h : t.WF) {v : β k} :
(insertIfNew k v t ).impl.size = if k t then t.size else t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] {k : α} (h : t.WF) {v : β k} :
(insertIfNew! k v t).size = if k t then t.size else t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_le_size_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
t.size (insertIfNew k v t ).impl.size
theorem Std.DTreeMap.Internal.Impl.size_le_size_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.size_insertIfNew_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew k v t ).impl.size t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_insertIfNew!_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew! k v t).size t.size + 1
theorem Std.DTreeMap.Internal.Impl.get?_empty {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [LawfulEqOrd α] {a : α} :
theorem Std.DTreeMap.Internal.Impl.get?_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} :
t.isEmpty = truet.get? a = none
theorem Std.DTreeMap.Internal.Impl.get?_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a k : α} {v : β k} :
(insert k v t ).impl.get? a = if h : compare k a = Ordering.eq then some (cast v) else t.get? a
theorem Std.DTreeMap.Internal.Impl.get?_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a k : α} {v : β k} :
(insert! k v t).get? a = if h : compare k a = Ordering.eq then some (cast v) else t.get? a
theorem Std.DTreeMap.Internal.Impl.get?_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.get? k = some v
theorem Std.DTreeMap.Internal.Impl.get?_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).get? k = some v
theorem Std.DTreeMap.Internal.Impl.contains_eq_isSome_get? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} :
contains a t = (t.get? a).isSome
theorem Std.DTreeMap.Internal.Impl.mem_iff_isSome_get? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} :
a t (t.get? a).isSome = true
theorem Std.DTreeMap.Internal.Impl.get?_eq_none_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} :
contains a t = falset.get? a = none
theorem Std.DTreeMap.Internal.Impl.get?_eq_none {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} :
¬a tt.get? a = none
theorem Std.DTreeMap.Internal.Impl.get?_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.get?_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.get?_erase_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} :
(erase k t ).impl.get? k = none
theorem Std.DTreeMap.Internal.Impl.get?_erase!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} :
(erase! k t).get? k = none
theorem Std.DTreeMap.Internal.Impl.Const.get?_empty {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {a : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_of_isEmpty {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} :
t.isEmpty = trueget? t a = none
theorem Std.DTreeMap.Internal.Impl.Const.get?_insert {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a k : α} {v : β} :
get? (insert k v t ).impl a = if compare k a = Ordering.eq then some v else get? t a
theorem Std.DTreeMap.Internal.Impl.Const.get?_insert! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a k : α} {v : β} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_insert_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {v : β} :
get? (insert k v t ).impl k = some v
theorem Std.DTreeMap.Internal.Impl.Const.get?_insert!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {v : β} :
get? (insert! k v t) k = some v
theorem Std.DTreeMap.Internal.Impl.Const.contains_eq_isSome_get? {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} :
contains a t = (get? t a).isSome
theorem Std.DTreeMap.Internal.Impl.Const.mem_iff_isSome_get? {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} :
a t (get? t a).isSome = true
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_none_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} :
contains a t = falseget? t a = none
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_none {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} :
¬a tget? t a = none
theorem Std.DTreeMap.Internal.Impl.Const.get?_erase {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_erase! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_erase_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} :
get? (erase k t ).impl k = none
theorem Std.DTreeMap.Internal.Impl.Const.get?_erase!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} :
get? (erase! k t) k = none
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_get? {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [LawfulEqOrd α] [TransOrd α] (h : t.WF) {a : α} :
get? t a = t.get? a
theorem Std.DTreeMap.Internal.Impl.Const.get?_congr {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a b : α} (hab : compare a b = Ordering.eq) :
get? t a = get? t b
theorem Std.DTreeMap.Internal.Impl.get_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {v : β k} {h₁ : a (insert k v t ).impl} :
(insert k v t ).impl.get a h₁ = if h₂ : compare k a = Ordering.eq then cast v else t.get a
theorem Std.DTreeMap.Internal.Impl.get_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {v : β k} {h₁ : a insert! k v t} :
(insert! k v t).get a h₁ = if h₂ : compare k a = Ordering.eq then cast v else t.get a
theorem Std.DTreeMap.Internal.Impl.get_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.get k = v
theorem Std.DTreeMap.Internal.Impl.get_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).get k = v
@[simp]
theorem Std.DTreeMap.Internal.Impl.get_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {h' : a (erase k t ).impl} :
(erase k t ).impl.get a h' = t.get a
theorem Std.DTreeMap.Internal.Impl.get_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {h' : a erase! k t} :
(erase! k t).get a h' = t.get a
theorem Std.DTreeMap.Internal.Impl.get?_eq_some_get {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {h' : a t} :
t.get? a = some (t.get a h')
theorem Std.DTreeMap.Internal.Impl.Const.get_insert {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {v : β} {h₁ : contains a (insert k v t ).impl = true} :
get (insert k v t ).impl a h₁ = if h₂ : compare k a = Ordering.eq then v else get t a
theorem Std.DTreeMap.Internal.Impl.Const.get_insert! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {v : β} {h₁ : contains a (insert! k v t) = true} :
get (insert! k v t) a h₁ = if h₂ : compare k a = Ordering.eq then v else get t a
theorem Std.DTreeMap.Internal.Impl.Const.get_insert_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {v : β} :
get (insert k v t ).impl k = v
theorem Std.DTreeMap.Internal.Impl.Const.get_insert!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {v : β} :
get (insert! k v t) k = v
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get_erase {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {h' : contains a (erase k t ).impl = true} :
get (erase k t ).impl a h' = get t a
theorem Std.DTreeMap.Internal.Impl.Const.get_erase! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {h' : contains a (erase! k t) = true} :
get (erase! k t) a h' = get t a
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_some_get {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} {h✝ : contains a t = true} :
get? t a = some (get t a h✝)
theorem Std.DTreeMap.Internal.Impl.Const.get_eq_get {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {h✝ : contains a t = true} :
get t a h✝ = t.get a h✝
theorem Std.DTreeMap.Internal.Impl.Const.get_congr {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a b : α} (hab : compare a b = Ordering.eq) {h' : contains a t = true} :
get t a h' = get t b
theorem Std.DTreeMap.Internal.Impl.get!_empty {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [LawfulEqOrd α] {a : α} [Inhabited (β a)] :
theorem Std.DTreeMap.Internal.Impl.get!_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] :
theorem Std.DTreeMap.Internal.Impl.get!_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} [Inhabited (β a)] {v : β k} :
(insert k v t ).impl.get! a = if h : compare k a = Ordering.eq then cast v else t.get! a
theorem Std.DTreeMap.Internal.Impl.get!_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} [Inhabited (β a)] {v : β k} :
(insert! k v t).get! a = if h : compare k a = Ordering.eq then cast v else t.get! a
theorem Std.DTreeMap.Internal.Impl.get!_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] {b : β a} :
(insert a b t ).impl.get! a = b
theorem Std.DTreeMap.Internal.Impl.get!_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] {b : β a} :
(insert! a b t).get! a = b
theorem Std.DTreeMap.Internal.Impl.get!_eq_default_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] :
theorem Std.DTreeMap.Internal.Impl.get!_eq_default {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] :
¬a tt.get! a = default
theorem Std.DTreeMap.Internal.Impl.get!_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} [Inhabited (β a)] :
theorem Std.DTreeMap.Internal.Impl.get!_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} [Inhabited (β a)] :
theorem Std.DTreeMap.Internal.Impl.get!_erase_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} [Inhabited (β k)] :
(erase k t ).impl.get! k = default
theorem Std.DTreeMap.Internal.Impl.get!_erase!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} [Inhabited (β k)] :
theorem Std.DTreeMap.Internal.Impl.get?_eq_some_get!_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] :
contains a t = truet.get? a = some (t.get! a)
theorem Std.DTreeMap.Internal.Impl.get?_eq_some_get! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] :
a tt.get? a = some (t.get! a)
theorem Std.DTreeMap.Internal.Impl.get!_eq_get!_get? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] :
t.get! a = (t.get? a).get!
theorem Std.DTreeMap.Internal.Impl.get_eq_get! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] {h✝ : a t} :
t.get a h✝ = t.get! a
theorem Std.DTreeMap.Internal.Impl.Const.get!_empty {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] [Inhabited β] {a : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_of_isEmpty {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_insert {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k a : α} {v : β} :
get! (insert k v t ).impl a = if compare k a = Ordering.eq then v else get! t a
theorem Std.DTreeMap.Internal.Impl.Const.get!_insert! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k a : α} {v : β} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_insert_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k : α} {v : β} :
get! (insert k v t ).impl k = v
theorem Std.DTreeMap.Internal.Impl.Const.get!_insert!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k : α} {v : β} :
get! (insert! k v t) k = v
theorem Std.DTreeMap.Internal.Impl.Const.get!_eq_default_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_eq_default {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a : α} :
¬a tget! t a = default
theorem Std.DTreeMap.Internal.Impl.Const.get!_erase {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_erase! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_erase_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k : α} :
get! (erase k t ).impl k = default
theorem Std.DTreeMap.Internal.Impl.Const.get!_erase!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_some_get!_of_contains {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a : α} :
contains a t = trueget? t a = some (get! t a)
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_some_get! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a : α} :
a tget? t a = some (get! t a)
theorem Std.DTreeMap.Internal.Impl.Const.get!_eq_get!_get? {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a : α} :
get! t a = (get? t a).get!
theorem Std.DTreeMap.Internal.Impl.Const.get_eq_get! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a : α} {h✝ : contains a t = true} :
get t a h✝ = get! t a
theorem Std.DTreeMap.Internal.Impl.Const.get!_eq_get! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] [Inhabited β] (h : t.WF) {a : α} :
get! t a = t.get! a
theorem Std.DTreeMap.Internal.Impl.Const.get!_congr {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a b : α} (hab : compare a b = Ordering.eq) :
get! t a = get! t b
theorem Std.DTreeMap.Internal.Impl.getD_empty {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [LawfulEqOrd α] {a : α} {fallback : β a} :
empty.getD a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getD_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback : β a} :
t.isEmpty = truet.getD a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getD_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {fallback : β a} {v : β k} :
(insert k v t ).impl.getD a fallback = if h : compare k a = Ordering.eq then cast v else t.getD a fallback
theorem Std.DTreeMap.Internal.Impl.getD_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {fallback : β a} {v : β k} :
(insert! k v t).getD a fallback = if h : compare k a = Ordering.eq then cast v else t.getD a fallback
theorem Std.DTreeMap.Internal.Impl.getD_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback b : β a} :
(insert a b t ).impl.getD a fallback = b
theorem Std.DTreeMap.Internal.Impl.getD_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback b : β a} :
(insert! a b t).getD a fallback = b
theorem Std.DTreeMap.Internal.Impl.getD_eq_fallback_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback : β a} :
contains a t = falset.getD a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getD_eq_fallback {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback : β a} :
¬a tt.getD a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getD_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {fallback : β a} :
(erase k t ).impl.getD a fallback = if compare k a = Ordering.eq then fallback else t.getD a fallback
theorem Std.DTreeMap.Internal.Impl.getD_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {fallback : β a} :
(erase! k t).getD a fallback = if compare k a = Ordering.eq then fallback else t.getD a fallback
theorem Std.DTreeMap.Internal.Impl.getD_erase_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {fallback : β k} :
(erase k t ).impl.getD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getD_erase!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {fallback : β k} :
(erase! k t).getD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.get?_eq_some_getD_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback : β a} :
contains a t = truet.get? a = some (t.getD a fallback)
theorem Std.DTreeMap.Internal.Impl.get?_eq_some_getD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback : β a} :
a tt.get? a = some (t.getD a fallback)
theorem Std.DTreeMap.Internal.Impl.getD_eq_getD_get? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback : β a} :
t.getD a fallback = (t.get? a).getD fallback
theorem Std.DTreeMap.Internal.Impl.get_eq_getD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback : β a} {h✝ : a t} :
t.get a h✝ = t.getD a fallback
theorem Std.DTreeMap.Internal.Impl.get!_eq_getD_default {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} [Inhabited (β a)] :
t.get! a = t.getD a default
theorem Std.DTreeMap.Internal.Impl.Const.getD_empty {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {a : α} {fallback : β} :
getD empty a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_of_isEmpty {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} {fallback : β} :
t.isEmpty = truegetD t a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_insert {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {fallback v : β} :
getD (insert k v t ).impl a fallback = if compare k a = Ordering.eq then v else getD t a fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_insert! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {fallback v : β} :
getD (insert! k v t) a fallback = if compare k a = Ordering.eq then v else getD t a fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_insert_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {fallback v : β} :
getD (insert k v t ).impl k fallback = v
theorem Std.DTreeMap.Internal.Impl.Const.getD_insert!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {fallback v : β} :
getD (insert! k v t) k fallback = v
theorem Std.DTreeMap.Internal.Impl.Const.getD_eq_fallback_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} {fallback : β} :
contains a t = falsegetD t a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_eq_fallback {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} {fallback : β} :
¬a tgetD t a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_erase {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {fallback : β} :
getD (erase k t ).impl a fallback = if compare k a = Ordering.eq then fallback else getD t a fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_erase! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {fallback : β} :
getD (erase! k t) a fallback = if compare k a = Ordering.eq then fallback else getD t a fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_erase_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {fallback : β} :
getD (erase k t ).impl k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_erase!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {fallback : β} :
getD (erase! k t) k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_some_getD_of_contains {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} {fallback : β} :
contains a t = trueget? t a = some (getD t a fallback)
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_some_getD {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} {fallback : β} :
a tget? t a = some (getD t a fallback)
theorem Std.DTreeMap.Internal.Impl.Const.getD_eq_getD_get? {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} {fallback : β} :
getD t a fallback = (get? t a).getD fallback
theorem Std.DTreeMap.Internal.Impl.Const.get_eq_getD {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a : α} {fallback : β} {h✝ : contains a t = true} :
get t a h✝ = getD t a fallback
theorem Std.DTreeMap.Internal.Impl.Const.get!_eq_getD_default {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {a : α} :
get! t a = getD t a default
theorem Std.DTreeMap.Internal.Impl.Const.getD_eq_getD {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {a : α} {fallback : β} :
getD t a fallback = t.getD a fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_congr {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {a b : α} {fallback : β} (hab : compare a b = Ordering.eq) :
getD t a fallback = getD t b fallback
theorem Std.DTreeMap.Internal.Impl.getKey?_empty {α : Type u} {β : αType v} {instOrd : Ord α} {a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey?_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey?_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getKey?_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getKey?_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.getKey? k = some k
theorem Std.DTreeMap.Internal.Impl.getKey?_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).getKey? k = some k
theorem Std.DTreeMap.Internal.Impl.contains_eq_isSome_getKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.mem_iff_isSome_getKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_none_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_none {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} :
¬a tt.getKey? a = none
theorem Std.DTreeMap.Internal.Impl.getKey?_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey?_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey?_erase_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
(erase k t ).impl.getKey? k = none
theorem Std.DTreeMap.Internal.Impl.getKey?_erase!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
theorem Std.DTreeMap.Internal.Impl.compare_getKey?_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
Option.all (fun (x : α) => decide (compare x k = Ordering.eq)) (t.getKey? k) = true
theorem Std.DTreeMap.Internal.Impl.getKey?_congr {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k k' : α} (h' : compare k k' = Ordering.eq) :
t.getKey? k = t.getKey? k'
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_some_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} (h' : contains k t = true) :
t.getKey? k = some k
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_some {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} (h' : k t) :
t.getKey? k = some k
theorem Std.DTreeMap.Internal.Impl.getKey_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} {h₁ : contains a (insert k v t ).impl = true} :
(insert k v t ).impl.getKey a h₁ = if h₂ : compare k a = Ordering.eq then k else t.getKey a
theorem Std.DTreeMap.Internal.Impl.getKey_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} {h₁ : contains a (insert! k v t) = true} :
(insert! k v t).getKey a h₁ = if h₂ : compare k a = Ordering.eq then k else t.getKey a
theorem Std.DTreeMap.Internal.Impl.getKey_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.getKey k = k
theorem Std.DTreeMap.Internal.Impl.getKey_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).getKey k = k
@[simp]
theorem Std.DTreeMap.Internal.Impl.getKey_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {h' : contains a (erase k t ).impl = true} :
(erase k t ).impl.getKey a h' = t.getKey a
@[simp]
theorem Std.DTreeMap.Internal.Impl.getKey_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {h' : contains a (erase! k t) = true} :
(erase! k t).getKey a h' = t.getKey a
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_some_getKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a : α} {h' : contains a t = true} :
t.getKey? a = some (t.getKey a h')
theorem Std.DTreeMap.Internal.Impl.compare_getKey_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (h' : k t) :
theorem Std.DTreeMap.Internal.Impl.getKey_congr {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k₁ k₂ : α} (h' : compare k₁ k₂ = Ordering.eq) (h₁ : k₁ t) :
t.getKey k₁ h₁ = t.getKey k₂
theorem Std.DTreeMap.Internal.Impl.getKey_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} (h' : k t) :
t.getKey k h' = k
theorem Std.DTreeMap.Internal.Impl.getKey!_empty {α : Type u} {β : αType v} {instOrd : Ord α} {a : α} [Inhabited α] :
theorem Std.DTreeMap.Internal.Impl.getKey!_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey!_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getKey!_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getKey!_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} {b : β a} :
(insert a b t ).impl.getKey! a = a
theorem Std.DTreeMap.Internal.Impl.getKey!_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} {b : β a} :
(insert! a b t).getKey! a = a
theorem Std.DTreeMap.Internal.Impl.getKey!_eq_default_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey!_eq_default {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} :
¬a tt.getKey! a = default
theorem Std.DTreeMap.Internal.Impl.getKey!_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey!_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k a : α} :
theorem Std.DTreeMap.Internal.Impl.getKey!_erase_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} :
(erase k t ).impl.getKey! k = default
theorem Std.DTreeMap.Internal.Impl.getKey!_erase!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} :
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_some_getKey!_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} :
contains a t = truet.getKey? a = some (t.getKey! a)
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_some_getKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} :
a tt.getKey? a = some (t.getKey! a)
theorem Std.DTreeMap.Internal.Impl.getKey!_eq_get!_getKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} :
t.getKey! a = (t.getKey? a).get!
theorem Std.DTreeMap.Internal.Impl.getKey_eq_getKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} {h✝ : contains a t = true} :
t.getKey a h✝ = t.getKey! a
theorem Std.DTreeMap.Internal.Impl.getKey!_congr {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k k' : α} (h' : compare k k' = Ordering.eq) :
t.getKey! k = t.getKey! k'
theorem Std.DTreeMap.Internal.Impl.getKey!_eq_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} (h' : contains k t = true) :
t.getKey! k = k
theorem Std.DTreeMap.Internal.Impl.getKey!_eq_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} (h' : k t) :
t.getKey! k = k
theorem Std.DTreeMap.Internal.Impl.getKeyD_empty {α : Type u} {β : αType v} {instOrd : Ord α} {a fallback : α} :
empty.getKeyD a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} :
t.isEmpty = truet.getKeyD a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a fallback : α} {v : β k} :
(insert k v t ).impl.getKeyD a fallback = if compare k a = Ordering.eq then k else t.getKeyD a fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a fallback : α} {v : β k} :
(insert! k v t).getKeyD a fallback = if compare k a = Ordering.eq then k else t.getKeyD a fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_insert_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} {b : β a} :
(insert a b t ).impl.getKeyD a fallback = a
theorem Std.DTreeMap.Internal.Impl.getKeyD_insert!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} {b : β a} :
(insert! a b t).getKeyD a fallback = a
theorem Std.DTreeMap.Internal.Impl.getKeyD_eq_fallback_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} :
contains a t = falset.getKeyD a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_eq_fallback {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} :
¬a tt.getKeyD a fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a fallback : α} :
(erase k t ).impl.getKeyD a fallback = if compare k a = Ordering.eq then fallback else t.getKeyD a fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a fallback : α} :
(erase! k t).getKeyD a fallback = if compare k a = Ordering.eq then fallback else t.getKeyD a fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_erase_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} :
(erase k t ).impl.getKeyD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_erase!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} :
(erase! k t).getKeyD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_some_getKeyD_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} :
contains a t = truet.getKey? a = some (t.getKeyD a fallback)
theorem Std.DTreeMap.Internal.Impl.getKey?_eq_some_getKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} :
a tt.getKey? a = some (t.getKeyD a fallback)
theorem Std.DTreeMap.Internal.Impl.getKeyD_eq_getD_getKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} :
t.getKeyD a fallback = (t.getKey? a).getD fallback
theorem Std.DTreeMap.Internal.Impl.getKey_eq_getKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {a fallback : α} {h✝ : contains a t = true} :
t.getKey a h✝ = t.getKeyD a fallback
theorem Std.DTreeMap.Internal.Impl.getKey!_eq_getKeyD_default {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {a : α} :
theorem Std.DTreeMap.Internal.Impl.getKeyD_congr {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k k' fallback : α} (h' : compare k k' = Ordering.eq) :
t.getKeyD k fallback = t.getKeyD k' fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_eq_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k fallback : α} (h' : contains k t = true) :
t.getKeyD k fallback = k
theorem Std.DTreeMap.Internal.Impl.getKeyD_eq_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k fallback : α} (h' : k t) :
t.getKeyD k fallback = k
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_insertIfNew' {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
a (insertIfNew k v t ).impl¬(compare k a = Ordering.eq ¬k t) → a t

This is a restatement of mem_of_mem_insertIfNew that is written to exactly match the proof obligation in the statement of get_insertIfNew.

theorem Std.DTreeMap.Internal.Impl.mem_of_mem_insertIfNew!' {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
a insertIfNew! k v t¬(compare k a = Ordering.eq ¬k t) → a t

This is a restatement of mem_of_mem_insertIfNew! that is written to exactly match the proof obligation in the statement of get_insertIfNew!.

theorem Std.DTreeMap.Internal.Impl.get?_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {v : β k} :
(insertIfNew k v t ).impl.get? a = if h : compare k a = Ordering.eq ¬k t then some (cast v) else t.get? a
theorem Std.DTreeMap.Internal.Impl.get?_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {v : β k} :
(insertIfNew! k v t).get? a = if h : compare k a = Ordering.eq ¬k t then some (cast v) else t.get? a
theorem Std.DTreeMap.Internal.Impl.get_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {v : β k} {h₁ : a (insertIfNew k v t ).impl} :
(insertIfNew k v t ).impl.get a h₁ = if h₂ : compare k a = Ordering.eq ¬k t then cast v else t.get a
theorem Std.DTreeMap.Internal.Impl.get_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {v : β k} {h₁ : a insertIfNew! k v t} :
(insertIfNew! k v t).get a h₁ = if h₂ : compare k a = Ordering.eq ¬k t then cast v else t.get a
theorem Std.DTreeMap.Internal.Impl.get!_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} [Inhabited (β a)] {v : β k} :
(insertIfNew k v t ).impl.get! a = if h : compare k a = Ordering.eq ¬k t then cast v else t.get! a
theorem Std.DTreeMap.Internal.Impl.get!_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} [Inhabited (β a)] {v : β k} :
(insertIfNew! k v t).get! a = if h : compare k a = Ordering.eq ¬k t then cast v else t.get! a
theorem Std.DTreeMap.Internal.Impl.getD_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {fallback : β a} {v : β k} :
(insertIfNew k v t ).impl.getD a fallback = if h : compare k a = Ordering.eq ¬k t then cast v else t.getD a fallback
theorem Std.DTreeMap.Internal.Impl.getD_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k a : α} {fallback : β a} {v : β k} :
(insertIfNew! k v t).getD a fallback = if h : compare k a = Ordering.eq ¬k t then cast v else t.getD a fallback
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertIfNew {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {v : β} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertIfNew! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {v : β} :
theorem Std.DTreeMap.Internal.Impl.Const.get_insertIfNew {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {v : β} {h₁ : contains a (insertIfNew k v t ).impl = true} :
get (insertIfNew k v t ).impl a h₁ = if h₂ : compare k a = Ordering.eq ¬k t then v else get t a
theorem Std.DTreeMap.Internal.Impl.Const.get_insertIfNew! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {v : β} {h₁ : contains a (insertIfNew! k v t) = true} :
get (insertIfNew! k v t) a h₁ = if h₂ : compare k a = Ordering.eq ¬k t then v else get t a
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertIfNew {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k a : α} {v : β} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertIfNew! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {k a : α} {v : β} :
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertIfNew {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {fallback v : β} :
getD (insertIfNew k v t ).impl a fallback = if compare k a = Ordering.eq ¬k t then v else getD t a fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertIfNew! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k a : α} {fallback v : β} :
getD (insertIfNew! k v t) a fallback = if compare k a = Ordering.eq ¬k t then v else getD t a fallback
theorem Std.DTreeMap.Internal.Impl.getKey?_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getKey?_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getKey_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} {h₁ : contains a (insertIfNew k v t ).impl = true} :
(insertIfNew k v t ).impl.getKey a h₁ = if h₂ : compare k a = Ordering.eq ¬k t then k else t.getKey a
theorem Std.DTreeMap.Internal.Impl.getKey_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a : α} {v : β k} {h₁ : contains a (insertIfNew! k v t) = true} :
(insertIfNew! k v t).getKey a h₁ = if h₂ : compare k a = Ordering.eq ¬k t then k else t.getKey a
theorem Std.DTreeMap.Internal.Impl.getKey!_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getKey!_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k a : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getKeyD_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a fallback : α} {v : β k} :
(insertIfNew k v t ).impl.getKeyD a fallback = if compare k a = Ordering.eq ¬k t then k else t.getKeyD a fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k a fallback : α} {v : β k} :
(insertIfNew! k v t).getKeyD a fallback = if compare k a = Ordering.eq ¬k t then k else t.getKeyD a fallback

getThenInsertIfNew? #

theorem Std.DTreeMap.Internal.Impl.getThenInsertIfNew?_fst {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {v : β k} :
(t.getThenInsertIfNew? k v ).fst = t.get? k
theorem Std.DTreeMap.Internal.Impl.getThenInsertIfNew?_snd {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {v : β k} :
(t.getThenInsertIfNew? k v ).snd = (insertIfNew k v t ).impl

getThenInsertIfNew?! #

theorem Std.DTreeMap.Internal.Impl.getThenInsertIfNew?!_fst {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.getThenInsertIfNew?!_snd {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {v : β k} :

getThenInsertIfNew? #

theorem Std.DTreeMap.Internal.Impl.Const.getThenInsertIfNew?_fst {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {v : β} :
(getThenInsertIfNew? t k v ).fst = get? t k
theorem Std.DTreeMap.Internal.Impl.Const.getThenInsertIfNew?_snd {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {v : β} :
(getThenInsertIfNew? t k v ).snd = (insertIfNew k v t ).impl

getThenInsertIfNew?! #

theorem Std.DTreeMap.Internal.Impl.Const.getThenInsertIfNew?!_fst {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k : α} {v : β} :
theorem Std.DTreeMap.Internal.Impl.Const.getThenInsertIfNew?!_snd {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {v : β} :
theorem Std.DTreeMap.Internal.Impl.length_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.isEmpty_keys {α : Type u} {β : αType v} {t : Impl α β} :
theorem Std.DTreeMap.Internal.Impl.contains_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [BEq α] [beqOrd : LawfulBEqOrd α] [TransOrd α] {k : α} (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.mem_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [LawfulEqOrd α] [TransOrd α] {k : α} (h : t.WF) :
k t.keys k t
theorem Std.DTreeMap.Internal.Impl.distinct_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
List.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) t.keys
theorem Std.DTreeMap.Internal.Impl.ordered_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
List.Pairwise (fun (a b : α) => compare a b = Ordering.lt) t.keys
theorem Std.DTreeMap.Internal.Impl.length_toList {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.isEmpty_toList {α : Type u} {β : αType v} {t : Impl α β} :
theorem Std.DTreeMap.Internal.Impl.mem_toList_iff_get?_eq_some {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] {k : α} {v : β k} (h : t.WF) :
k, v t.toList t.get? k = some v
theorem Std.DTreeMap.Internal.Impl.find?_toList_eq_some_iff_get?_eq_some {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] {k : α} {v : β k} (h : t.WF) :
List.find? (fun (x : (a : α) × β a) => compare x.fst k == Ordering.eq) t.toList = some k, v t.get? k = some v
theorem Std.DTreeMap.Internal.Impl.find?_toList_eq_none_iff_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] {k : α} (h : t.WF) :
List.find? (fun (x : (a : α) × β a) => compare x.fst k == Ordering.eq) t.toList = none contains k t = false
theorem Std.DTreeMap.Internal.Impl.find?_toList_eq_none_iff_not_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] {k : α} (h : t.WF) :
List.find? (fun (x : (a : α) × β a) => compare x.fst k == Ordering.eq) t.toList = none ¬k t
theorem Std.DTreeMap.Internal.Impl.distinct_keys_toList {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) t.toList
theorem Std.DTreeMap.Internal.Impl.ordered_keys_toList {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
List.Pairwise (fun (a b : (a : α) × β a) => compare a.fst b.fst = Ordering.lt) t.toList
theorem Std.DTreeMap.Internal.Impl.Const.map_fst_toList_eq_keys {α : Type u} {β : Type v} {t : Impl α fun (x : α) => β} :
theorem Std.DTreeMap.Internal.Impl.Const.length_toList {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_toList {α : Type u} {β : Type v} {t : Impl α fun (x : α) => β} :
theorem Std.DTreeMap.Internal.Impl.Const.mem_toList_iff_get?_eq_some {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] {k : α} {v : β} (h : t.WF) :
(k, v) toList t get? t k = some v
theorem Std.DTreeMap.Internal.Impl.Const.mem_toList_iff_getKey?_eq_some_and_get?_eq_some {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k : α} {v : β} (h : t.WF) :
(k, v) toList t t.getKey? k = some k get? t k = some v
theorem Std.DTreeMap.Internal.Impl.Const.get?_eq_some_iff_exists_compare_eq_eq_and_mem_toList {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k : α} {v : β} (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.Const.find?_toList_eq_some_iff_getKey?_eq_some_and_get?_eq_some {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k k' : α} {v : β} (h : t.WF) :
List.find? (fun (a : α × β) => compare a.fst k == Ordering.eq) (toList t) = some (k', v) t.getKey? k = some k' get? t k = some v
theorem Std.DTreeMap.Internal.Impl.Const.find?_toList_eq_none_iff_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k : α} (h : t.WF) :
List.find? (fun (x : α × β) => compare x.fst k == Ordering.eq) (toList t) = none contains k t = false
theorem Std.DTreeMap.Internal.Impl.Const.find?_toList_eq_none_iff_not_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k : α} (h : t.WF) :
List.find? (fun (x : α × β) => compare x.fst k == Ordering.eq) (toList t) = none ¬k t
theorem Std.DTreeMap.Internal.Impl.Const.distinct_keys_toList {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) :
List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) (toList t)
theorem Std.DTreeMap.Internal.Impl.Const.ordered_keys_toList {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) :
List.Pairwise (fun (a b : α × β) => compare a.fst b.fst = Ordering.lt) (toList t)
theorem Std.DTreeMap.Internal.Impl.foldlM_eq_foldlM_toList {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {m : Type w → Type w} [Monad m] [LawfulMonad m] {f : δ(a : α) → β am δ} {init : δ} :
foldlM f init t = List.foldlM (fun (a : δ) (b : (a : α) × β a) => f a b.fst b.snd) init t.toList
theorem Std.DTreeMap.Internal.Impl.foldl_eq_foldl_toList {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {f : δ(a : α) → β aδ} {init : δ} :
foldl f init t = List.foldl (fun (a : δ) (b : (a : α) × β a) => f a b.fst b.snd) init t.toList
theorem Std.DTreeMap.Internal.Impl.foldrM_eq_foldrM_toList {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {m : Type w → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → β aδm δ} {init : δ} :
foldrM f init t = List.foldrM (fun (a : (a : α) × β a) (b : δ) => f a.fst a.snd b) init t.toList
theorem Std.DTreeMap.Internal.Impl.foldr_eq_foldr_toList {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {f : (a : α) → β aδδ} {init : δ} :
foldr f init t = List.foldr (fun (a : (a : α) × β a) (b : δ) => f a.fst a.snd b) init t.toList
theorem Std.DTreeMap.Internal.Impl.forM_eq_forM_toList {α : Type u} {β : αType v} {t : Impl α β} {m : Type w → Type w} [Monad m] [LawfulMonad m] {f : (a : α) × β am PUnit} :
forM (fun (k : α) (v : β k) => f k, v) t = ForM.forM t.toList f
theorem Std.DTreeMap.Internal.Impl.forIn_eq_forIn_toList {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {m : Type w → Type w} [Monad m] [LawfulMonad m] {f : (a : α) × β aδm (ForInStep δ)} {init : δ} :
forIn (fun (k : α) (v : β k) => f k, v) init t = ForIn.forIn t.toList init f
theorem Std.DTreeMap.Internal.Impl.foldlM_eq_foldlM_keys {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {m : Type w → Type w} [Monad m] [LawfulMonad m] {f : δαm δ} {init : δ} :
foldlM (fun (d : δ) (a : α) (x : β a) => f d a) init t = List.foldlM f init t.keys
theorem Std.DTreeMap.Internal.Impl.foldl_eq_foldl_keys {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {f : δαδ} {init : δ} :
foldl (fun (d : δ) (a : α) (x : β a) => f d a) init t = List.foldl f init t.keys
theorem Std.DTreeMap.Internal.Impl.foldrM_eq_foldrM_keys {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {m : Type w → Type w} [Monad m] [LawfulMonad m] {f : αδm δ} {init : δ} :
foldrM (fun (a : α) (x : β a) (d : δ) => f a d) init t = List.foldrM f init t.keys
theorem Std.DTreeMap.Internal.Impl.foldr_eq_foldr_keys {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {f : αδδ} {init : δ} :
foldr (fun (a : α) (x : β a) (d : δ) => f a d) init t = List.foldr f init t.keys
theorem Std.DTreeMap.Internal.Impl.forM_eq_forM_keys {α : Type u} {β : αType v} {t : Impl α β} {m : Type w → Type w} [Monad m] [LawfulMonad m] {f : αm PUnit} :
forM (fun (a : α) (x : β a) => f a) t = t.keys.forM f
theorem Std.DTreeMap.Internal.Impl.forIn_eq_forIn_keys {α : Type u} {β : αType v} {t : Impl α β} {δ : Type w} {m : Type w → Type w} [Monad m] [LawfulMonad m] {f : αδm (ForInStep δ)} {init : δ} :
forIn (fun (a : α) (x : β a) (d : δ) => f a d) init t = ForIn.forIn t.keys init f
theorem Std.DTreeMap.Internal.Impl.Const.foldlM_eq_foldlM_toList {α : Type u} {δ : Type w} {m : Type w → Type w} {β : Type v} {t : Impl α fun (x : α) => β} [Monad m] [LawfulMonad m] {f : δαβm δ} {init : δ} :
foldlM f init t = List.foldlM (fun (a : δ) (b : α × β) => f a b.fst b.snd) init (toList t)
theorem Std.DTreeMap.Internal.Impl.Const.foldl_eq_foldl_toList {α : Type u} {δ : Type w} {β : Type v} {t : Impl α fun (x : α) => β} {f : δαβδ} {init : δ} :
foldl f init t = List.foldl (fun (a : δ) (b : α × β) => f a b.fst b.snd) init (toList t)
theorem Std.DTreeMap.Internal.Impl.Const.foldrM_eq_foldrM_toList {α : Type u} {δ : Type w} {m : Type w → Type w} {β : Type v} {t : Impl α fun (x : α) => β} [Monad m] [LawfulMonad m] {f : αβδm δ} {init : δ} :
foldrM f init t = List.foldrM (fun (a : α × β) (b : δ) => f a.fst a.snd b) init (toList t)
theorem Std.DTreeMap.Internal.Impl.Const.foldr_eq_foldr_toList {α : Type u} {δ : Type w} {β : Type v} {t : Impl α fun (x : α) => β} {f : αβδδ} {init : δ} :
foldr f init t = List.foldr (fun (a : α × β) (b : δ) => f a.fst a.snd b) init (toList t)
theorem Std.DTreeMap.Internal.Impl.Const.forM_eq_forM_toList {α : Type u} {m : Type w → Type w} {β : Type v} {t : Impl α fun (x : α) => β} [Monad m] [LawfulMonad m] {f : αβm PUnit} :
forM f t = (toList t).forM fun (a : α × β) => f a.fst a.snd
theorem Std.DTreeMap.Internal.Impl.Const.forIn_eq_forIn_toList {α : Type u} {δ : Type w} {m : Type w → Type w} {β : Type v} {t : Impl α fun (x : α) => β} [Monad m] [LawfulMonad m] {f : αβδm (ForInStep δ)} {init : δ} :
forIn f init t = ForIn.forIn (toList t) init fun (a : α × β) (b : δ) => f a.fst a.snd b
theorem Std.DTreeMap.Internal.Impl.insertMany_cons {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} (h : t.WF) {l : List ((a : α) × β a)} {k : α} {v : β k} :
(t.insertMany (k, v :: l) ).val = ((insert k v t ).impl.insertMany l ).val
theorem Std.DTreeMap.Internal.Impl.insertMany!_cons {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} {l : List ((a : α) × β a)} {k : α} {v : β k} :
(t.insertMany! (k, v :: l)).val = ((insert! k v t).insertMany! l).val
@[simp]
theorem Std.DTreeMap.Internal.Impl.contains_insertMany_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.mem_insertMany_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.contains_insertMany!_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.mem_insertMany!_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} :
theorem Std.DTreeMap.Internal.Impl.contains_of_contains_insertMany_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} :
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_insertMany_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} :
k (t.insertMany l ).val(List.map Sigma.fst l).contains k = falsek t
theorem Std.DTreeMap.Internal.Impl.contains_of_contains_insertMany!_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} :
theorem Std.DTreeMap.Internal.Impl.mem_of_mem_insertMany!_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} :
k (t.insertMany! l).val(List.map Sigma.fst l).contains k = falsek t
theorem Std.DTreeMap.Internal.Impl.get?_insertMany_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (h' : (List.map Sigma.fst l).contains k = false) :
(t.insertMany l ).val.get? k = t.get? k
theorem Std.DTreeMap.Internal.Impl.get?_insertMany!_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (h' : (List.map Sigma.fst l).contains k = false) :
(t.insertMany! l).val.get? k = t.get? k
theorem Std.DTreeMap.Internal.Impl.get?_insertMany_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(t.insertMany l ).val.get? k' = some (cast v)
theorem Std.DTreeMap.Internal.Impl.get?_insertMany!_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(t.insertMany! l).val.get? k' = some (cast v)
theorem Std.DTreeMap.Internal.Impl.get_insertMany_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (contains : (List.map Sigma.fst l).contains k = false) {h' : k (t.insertMany l ).val} :
(t.insertMany l ).val.get k h' = t.get k
theorem Std.DTreeMap.Internal.Impl.get_insertMany!_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (contains : (List.map Sigma.fst l).contains k = false) {h' : k (t.insertMany! l).val} :
(t.insertMany! l).val.get k h' = t.get k
theorem Std.DTreeMap.Internal.Impl.get_insertMany_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) {h' : k' (t.insertMany l ).val} :
(t.insertMany l ).val.get k' h' = cast v
theorem Std.DTreeMap.Internal.Impl.get_insertMany!_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) {h' : k' (t.insertMany! l).val} :
(t.insertMany! l).val.get k' h' = cast v
theorem Std.DTreeMap.Internal.Impl.get!_insertMany_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} [Inhabited (β k)] (h' : (List.map Sigma.fst l).contains k = false) :
(t.insertMany l ).val.get! k = t.get! k
theorem Std.DTreeMap.Internal.Impl.get!_insertMany!_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} [Inhabited (β k)] (h' : (List.map Sigma.fst l).contains k = false) :
(t.insertMany! l).val.get! k = t.get! k
theorem Std.DTreeMap.Internal.Impl.get!_insertMany_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} [Inhabited (β k')] (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(t.insertMany l ).val.get! k' = cast v
theorem Std.DTreeMap.Internal.Impl.get!_insertMany!_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} [Inhabited (β k')] (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(t.insertMany! l).val.get! k' = cast v
theorem Std.DTreeMap.Internal.Impl.getD_insertMany_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} {fallback : β k} (contains_eq_false : (List.map Sigma.fst l).contains k = false) :
(t.insertMany l ).val.getD k fallback = t.getD k fallback
theorem Std.DTreeMap.Internal.Impl.getD_insertMany!_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} {fallback : β k} (contains_eq_false : (List.map Sigma.fst l).contains k = false) :
(t.insertMany! l).val.getD k fallback = t.getD k fallback
theorem Std.DTreeMap.Internal.Impl.getD_insertMany_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} {fallback : β k'} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(t.insertMany l ).val.getD k' fallback = cast v
theorem Std.DTreeMap.Internal.Impl.getD_insertMany!_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} {fallback : β k'} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(t.insertMany! l).val.getD k' fallback = cast v
theorem Std.DTreeMap.Internal.Impl.getKey?_insertMany_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (h' : (List.map Sigma.fst l).contains k = false) :
(t.insertMany l ).val.getKey? k = t.getKey? k
theorem Std.DTreeMap.Internal.Impl.getKey?_insertMany!_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (h' : (List.map Sigma.fst l).contains k = false) :
theorem Std.DTreeMap.Internal.Impl.getKey?_insertMany_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
(t.insertMany l ).val.getKey? k' = some k
theorem Std.DTreeMap.Internal.Impl.getKey?_insertMany!_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
theorem Std.DTreeMap.Internal.Impl.getKey_insertMany_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (h₁ : (List.map Sigma.fst l).contains k = false) {h' : contains k (t.insertMany l ).val = true} :
(t.insertMany l ).val.getKey k h' = t.getKey k
theorem Std.DTreeMap.Internal.Impl.getKey_insertMany!_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (h₁ : (List.map Sigma.fst l).contains k = false) {h' : contains k (t.insertMany! l).val = true} :
(t.insertMany! l).val.getKey k h' = t.getKey k
theorem Std.DTreeMap.Internal.Impl.getKey_insertMany_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) {h' : contains k' (t.insertMany l ).val = true} :
(t.insertMany l ).val.getKey k' h' = k
theorem Std.DTreeMap.Internal.Impl.getKey_insertMany!_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) {h' : contains k' (t.insertMany! l).val = true} :
(t.insertMany! l).val.getKey k' h' = k
theorem Std.DTreeMap.Internal.Impl.getKey!_insertMany_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [Inhabited α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (h' : (List.map Sigma.fst l).contains k = false) :
(t.insertMany l ).val.getKey! k = t.getKey! k
theorem Std.DTreeMap.Internal.Impl.getKey!_insertMany!_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [Inhabited α] (h : t.WF) {l : List ((a : α) × β a)} {k : α} (h' : (List.map Sigma.fst l).contains k = false) :
theorem Std.DTreeMap.Internal.Impl.getKey!_insertMany_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
(t.insertMany l ).val.getKey! k' = k
theorem Std.DTreeMap.Internal.Impl.getKey!_insertMany!_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
theorem Std.DTreeMap.Internal.Impl.getKeyD_insertMany_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k fallback : α} (h' : (List.map Sigma.fst l).contains k = false) :
(t.insertMany l ).val.getKeyD k fallback = t.getKeyD k fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_insertMany!_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k fallback : α} (h' : (List.map Sigma.fst l).contains k = false) :
(t.insertMany! l).val.getKeyD k fallback = t.getKeyD k fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_insertMany_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
(t.insertMany l ).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.getKeyD_insertMany!_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
(t.insertMany! l).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.size_insertMany_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) :
(∀ (a : α), contains a t = true(List.map Sigma.fst l).contains a = false)(t.insertMany l ).val.size = t.size + l.length
theorem Std.DTreeMap.Internal.Impl.size_insertMany!_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List ((a : α) × β a)} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) :
(∀ (a : α), contains a t = true(List.map Sigma.fst l).contains a = false)(t.insertMany! l).val.size = t.size + l.length
theorem Std.DTreeMap.Internal.Impl.size_le_size_insertMany_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} :
t.size (t.insertMany l ).val.size
theorem Std.DTreeMap.Internal.Impl.size_le_size_insertMany!_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} :
theorem Std.DTreeMap.Internal.Impl.size_insertMany_list_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} :
theorem Std.DTreeMap.Internal.Impl.size_insertMany!_list_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.isEmpty_insertMany_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.isEmpty_insertMany!_list {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {l : List ((a : α) × β a)} :
theorem Std.DTreeMap.Internal.Impl.Const.insertMany_cons {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {l : List (α × β)} {k : α} {v : β} :
(insertMany t ((k, v) :: l) ).val = (insertMany (insert k v t ).impl l ).val
theorem Std.DTreeMap.Internal.Impl.Const.insertMany!_cons {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} {l : List (α × β)} {k : α} {v : β} :
(insertMany! t ((k, v) :: l)).val = (insertMany! (insert! k v t) l).val
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.contains_insertMany_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.contains_insertMany!_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.mem_insertMany_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.mem_insertMany!_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.contains_of_contains_insertMany_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.mem_of_mem_insertMany_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} :
k (insertMany t l ).val(List.map Prod.fst l).contains k = falsek t
theorem Std.DTreeMap.Internal.Impl.Const.contains_of_contains_insertMany!_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.mem_of_mem_insertMany!_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} :
k (insertMany! t l).val(List.map Prod.fst l).contains k = falsek t
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertMany_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} (h' : (List.map Prod.fst l).contains k = false) :
(insertMany t l ).val.getKey? k = t.getKey? k
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertMany!_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} (h' : (List.map Prod.fst l).contains k = false) :
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertMany_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
(insertMany t l ).val.getKey? k' = some k
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertMany!_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertMany_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} (h₁ : (List.map Prod.fst l).contains k = false) {h' : contains k (insertMany t l ).val = true} :
(insertMany t l ).val.getKey k h' = t.getKey k
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertMany!_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} (h₁ : (List.map Prod.fst l).contains k = false) {h' : contains k (insertMany! t l).val = true} :
(insertMany! t l).val.getKey k h' = t.getKey k
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertMany_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) {h' : contains k' (insertMany t l ).val = true} :
(insertMany t l ).val.getKey k' h' = k
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertMany!_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) {h' : contains k' (insertMany! t l).val = true} :
(insertMany! t l).val.getKey k' h' = k
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertMany_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [Inhabited α] (h : t.WF) {l : List (α × β)} {k : α} (h' : (List.map Prod.fst l).contains k = false) :
(insertMany t l ).val.getKey! k = t.getKey! k
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertMany!_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [Inhabited α] (h : t.WF) {l : List (α × β)} {k : α} (h' : (List.map Prod.fst l).contains k = false) :
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertMany_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
(insertMany t l ).val.getKey! k' = k
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertMany!_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertMany_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k fallback : α} (h' : (List.map Prod.fst l).contains k = false) :
(insertMany t l ).val.getKeyD k fallback = t.getKeyD k fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertMany!_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k fallback : α} (h' : (List.map Prod.fst l).contains k = false) :
(insertMany! t l).val.getKeyD k fallback = t.getKeyD k fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertMany_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
(insertMany t l ).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertMany!_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
(insertMany! t l).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.Const.size_insertMany_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) :
(∀ (a : α), contains a t = true(List.map Prod.fst l).contains a = false)(insertMany t l ).val.size = t.size + l.length
theorem Std.DTreeMap.Internal.Impl.Const.size_insertMany!_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) :
(∀ (a : α), contains a t = true(List.map Prod.fst l).contains a = false)(insertMany! t l).val.size = t.size + l.length
theorem Std.DTreeMap.Internal.Impl.Const.size_le_size_insertMany_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} :
t.size (insertMany t l ).val.size
theorem Std.DTreeMap.Internal.Impl.Const.size_le_size_insertMany!_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} :
theorem Std.DTreeMap.Internal.Impl.Const.size_insertMany_list_le {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} :
theorem Std.DTreeMap.Internal.Impl.Const.size_insertMany!_list_le {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_insertMany_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_insertMany!_list {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertMany_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} (h' : (List.map Prod.fst l).contains k = false) :
get? (insertMany t l ).val k = get? t k
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertMany!_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} (h' : (List.map Prod.fst l).contains k = false) :
get? (insertMany! t l).val k = get? t k
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertMany_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
get? (insertMany t l ).val k' = some v
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertMany!_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
theorem Std.DTreeMap.Internal.Impl.Const.get_insertMany_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} (h₁ : (List.map Prod.fst l).contains k = false) {h' : contains k (insertMany t l ).val = true} :
get (insertMany t l ).val k h' = get t k
theorem Std.DTreeMap.Internal.Impl.Const.get_insertMany!_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} (h₁ : (List.map Prod.fst l).contains k = false) {h' : contains k (insertMany! t l).val = true} :
get (insertMany! t l).val k h' = get t k
theorem Std.DTreeMap.Internal.Impl.Const.get_insertMany_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) {h' : contains k' (insertMany t l ).val = true} :
get (insertMany t l ).val k' h' = v
theorem Std.DTreeMap.Internal.Impl.Const.get_insertMany!_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) {h' : contains k' (insertMany! t l).val = true} :
get (insertMany! t l).val k' h' = v
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertMany_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [Inhabited β] (h : t.WF) {l : List (α × β)} {k : α} (h' : (List.map Prod.fst l).contains k = false) :
get! (insertMany t l ).val k = get! t k
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertMany!_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] [Inhabited β] (h : t.WF) {l : List (α × β)} {k : α} (h' : (List.map Prod.fst l).contains k = false) :
get! (insertMany! t l).val k = get! t k
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertMany_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {l : List (α × β)} {k k' : α} {v : β} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
get! (insertMany t l ).val k' = v
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertMany!_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited β] (h : t.WF) {l : List (α × β)} {k k' : α} {v : β} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
get! (insertMany! t l).val k' = v
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertMany_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} {fallback : β} (h' : (List.map Prod.fst l).contains k = false) :
getD (insertMany t l ).val k fallback = getD t k fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertMany!_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List (α × β)} {k : α} {fallback : β} (h' : (List.map Prod.fst l).contains k = false) :
getD (insertMany! t l).val k fallback = getD t k fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertMany_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} {v fallback : β} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
getD (insertMany t l ).val k' fallback = v
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertMany!_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {l : List (α × β)} {k k' : α} {v fallback : β} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
getD (insertMany! t l).val k' fallback = v
theorem Std.DTreeMap.Internal.Impl.Const.insertManyIfNewUnit_cons {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.insertManyIfNewUnit!_cons {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} {l : List α} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.contains_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.contains_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.mem_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.mem_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.contains_of_contains_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} (h₂ : l.contains k = false) :
theorem Std.DTreeMap.Internal.Impl.Const.contains_of_contains_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} (h₂ : l.contains k = false) :
theorem Std.DTreeMap.Internal.Impl.Const.mem_of_mem_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} (contains_eq_false : l.contains k = false) :
k (insertManyIfNewUnit t l ).valk t
theorem Std.DTreeMap.Internal.Impl.Const.mem_of_mem_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} (contains_eq_false : l.contains k = false) :
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertManyIfNewUnit_list_of_not_mem_of_contains_eq_false {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} :
¬k tl.contains k = false(insertManyIfNewUnit t l ).val.getKey? k = none
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertManyIfNewUnit!_list_of_not_mem_of_contains_eq_false {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertManyIfNewUnit_list_of_not_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) :
¬k tList.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) lk l(insertManyIfNewUnit t l ).val.getKey? k' = some k
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertManyIfNewUnit!_list_of_not_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) :
¬k tList.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) lk l(insertManyIfNewUnit! t l).val.getKey? k' = some k
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertManyIfNewUnit_list_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k : α} :
k t(insertManyIfNewUnit t l ).val.getKey? k = t.getKey? k
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertManyIfNewUnit!_list_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertManyIfNewUnit_list_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k : α} {h' : contains k (insertManyIfNewUnit t l ).val = true} (contains : k t) :
(insertManyIfNewUnit t l ).val.getKey k h' = t.getKey k contains
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertManyIfNewUnit!_list_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k : α} {h' : contains k (insertManyIfNewUnit! t l).val = true} (contains : k t) :
(insertManyIfNewUnit! t l).val.getKey k h' = t.getKey k contains
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertManyIfNewUnit_list_of_not_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) {h' : contains k' (insertManyIfNewUnit t l ).val = true} :
¬k tList.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) lk l(insertManyIfNewUnit t l ).val.getKey k' h' = k
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertManyIfNewUnit!_list_of_not_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) {h' : contains k' (insertManyIfNewUnit! t l).val = true} :
¬k tList.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) lk l(insertManyIfNewUnit! t l).val.getKey k' h' = k
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertManyIfNewUnit_list_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k : α} (contains : k t) {h' : Std.DTreeMap.Internal.Impl.contains k (insertManyIfNewUnit t l ).val = true} :
(insertManyIfNewUnit t l ).val.getKey k h' = t.getKey k contains
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertManyIfNewUnit!_list_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k : α} (contains : k t) {h' : Std.DTreeMap.Internal.Impl.contains k (insertManyIfNewUnit! t l).val = true} :
(insertManyIfNewUnit! t l).val.getKey k h' = t.getKey k contains
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertManyIfNewUnit_list_of_not_mem_of_contains_eq_false {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [BEq α] [LawfulBEqOrd α] [TransOrd α] [Inhabited α] (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertManyIfNewUnit!_list_of_not_mem_of_contains_eq_false {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [BEq α] [LawfulBEqOrd α] [TransOrd α] [Inhabited α] (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertManyIfNewUnit_list_of_not_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [Inhabited α] (h : t.WF) {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) :
¬k tList.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) lk l(insertManyIfNewUnit t l ).val.getKey! k' = k
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertManyIfNewUnit!_list_of_not_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [Inhabited α] (h : t.WF) {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) :
¬k tList.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) lk l(insertManyIfNewUnit! t l).val.getKey! k' = k
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertManyIfNewUnit_list_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [Inhabited α] (h : t.WF) {l : List α} {k : α} :
k t(insertManyIfNewUnit t l ).val.getKey! k = t.getKey! k
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertManyIfNewUnit!_list_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [Inhabited α] (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertManyIfNewUnit_list_of_not_mem_of_contains_eq_false {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [BEq α] [LawfulBEqOrd α] [TransOrd α] (h : t.WF) {l : List α} {k fallback : α} :
¬k tl.contains k = false(insertManyIfNewUnit t l ).val.getKeyD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertManyIfNewUnit!_list_of_not_mem_of_contains_eq_false {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [BEq α] [LawfulBEqOrd α] [TransOrd α] (h : t.WF) {l : List α} {k fallback : α} :
¬k tl.contains k = false(insertManyIfNewUnit! t l).val.getKeyD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertManyIfNewUnit_list_of_not_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) :
¬k tList.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) lk l(insertManyIfNewUnit t l ).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertManyIfNewUnit!_list_of_not_mem_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) :
¬k tList.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) lk l(insertManyIfNewUnit! t l).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertManyIfNewUnit_list_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k fallback : α} :
k t(insertManyIfNewUnit t l ).val.getKeyD k fallback = t.getKeyD k fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertManyIfNewUnit!_list_of_mem {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} {k fallback : α} :
k t(insertManyIfNewUnit! t l).val.getKeyD k fallback = t.getKeyD k fallback
theorem Std.DTreeMap.Internal.Impl.Const.size_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} (distinct : List.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) l) :
(∀ (a : α), a tl.contains a = false)(insertManyIfNewUnit t l ).val.size = t.size + l.length
theorem Std.DTreeMap.Internal.Impl.Const.size_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} (distinct : List.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) l) :
(∀ (a : α), a tl.contains a = false)(insertManyIfNewUnit! t l).val.size = t.size + l.length
theorem Std.DTreeMap.Internal.Impl.Const.size_le_size_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} :
theorem Std.DTreeMap.Internal.Impl.Const.size_le_size_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} :
theorem Std.DTreeMap.Internal.Impl.Const.size_insertManyIfNewUnit_list_le {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} :
theorem Std.DTreeMap.Internal.Impl.Const.size_insertManyIfNewUnit!_list_le {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] (h : t.WF) {l : List α} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} [TransOrd α] [BEq α] [LawfulBEqOrd α] (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} (h : t.WF) {l : List α} {k : α} {h' : contains k (insertManyIfNewUnit t l ).val = true} :
get (insertManyIfNewUnit t l ).val k h' = ()
theorem Std.DTreeMap.Internal.Impl.Const.get_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} {l : List α} {k : α} {h' : contains k (insertManyIfNewUnit! t l).val = true} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} (h : t.WF) {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} {l : List α} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertManyIfNewUnit_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} (h : t.WF) {l : List α} {k : α} {fallback : Unit} :
getD (insertManyIfNewUnit t l ).val k fallback = ()
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertManyIfNewUnit!_list {α : Type u} {instOrd : Ord α} {t : Impl α fun (x : α) => Unit} {l : List α} {k : α} {fallback : Unit} :
getD (insertManyIfNewUnit! t l).val k fallback = ()
@[simp]
theorem Std.DTreeMap.Internal.Impl.insertMany_empty_list_nil {α : Type u} {β : αType v} {instOrd : Ord α} :
@[simp]
@[simp]
theorem Std.DTreeMap.Internal.Impl.insertMany_empty_list_singleton {α : Type u} {β : αType v} {instOrd : Ord α} {k : α} {v : β k} :
(empty.insertMany [k, v] ).val = (insert k v empty ).impl
@[simp]
theorem Std.DTreeMap.Internal.Impl.insertMany!_empty_list_singleton {α : Type u} {β : αType v} {instOrd : Ord α} {k : α} {v : β k} :
(empty.insertMany! [k, v]).val = (insert k v empty ).impl
theorem Std.DTreeMap.Internal.Impl.insertMany_empty_list_cons {α : Type u} {β : αType v} {instOrd : Ord α} {k : α} {v : β k} {tl : List ((a : α) × β a)} :
(empty.insertMany (k, v :: tl) ).val = ((insert k v empty ).impl.insertMany tl ).val
theorem Std.DTreeMap.Internal.Impl.insertMany_empty_list_cons_eq_insertMany! {α : Type u} {β : αType v} {instOrd : Ord α} {k : α} {v : β k} {tl : List ((a : α) × β a)} :
(empty.insertMany (k, v :: tl) ).val = ((insert! k v empty).insertMany! tl).val
theorem Std.DTreeMap.Internal.Impl.contains_insertMany_empty_list {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [BEq α] [LawfulBEqOrd α] {l : List ((a : α) × β a)} {k : α} :
theorem Std.DTreeMap.Internal.Impl.get?_insertMany_empty_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] {l : List ((a : α) × β a)} {k : α} (h : (List.map Sigma.fst l).contains k = false) :
theorem Std.DTreeMap.Internal.Impl.get?_insertMany_empty_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [LawfulEqOrd α] {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(empty.insertMany l ).val.get? k' = some (cast v)
theorem Std.DTreeMap.Internal.Impl.get_insertMany_empty_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [LawfulEqOrd α] {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) {h : k' (empty.insertMany l ).val} :
(empty.insertMany l ).val.get k' h = cast v
theorem Std.DTreeMap.Internal.Impl.get!_insertMany_empty_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] {l : List ((a : α) × β a)} {k : α} [Inhabited (β k)] (h : (List.map Sigma.fst l).contains k = false) :
theorem Std.DTreeMap.Internal.Impl.get!_insertMany_empty_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [LawfulEqOrd α] {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} [Inhabited (β k')] (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(empty.insertMany l ).val.get! k' = cast v
theorem Std.DTreeMap.Internal.Impl.getD_insertMany_empty_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [BEq α] [LawfulBEqOrd α] [LawfulEqOrd α] {l : List ((a : α) × β a)} {k : α} {fallback : β k} (contains_eq_false : (List.map Sigma.fst l).contains k = false) :
(empty.insertMany l ).val.getD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getD_insertMany_empty_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [LawfulEqOrd α] {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β k} {fallback : β k'} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k, v l) :
(empty.insertMany l ).val.getD k' fallback = cast v
theorem Std.DTreeMap.Internal.Impl.getKey?_insertMany_empty_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [BEq α] [LawfulBEqOrd α] {l : List ((a : α) × β a)} {k : α} (h : (List.map Sigma.fst l).contains k = false) :
theorem Std.DTreeMap.Internal.Impl.getKey?_insertMany_empty_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
theorem Std.DTreeMap.Internal.Impl.getKey_insertMany_empty_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) {h' : contains k' (empty.insertMany l ).val = true} :
(empty.insertMany l ).val.getKey k' h' = k
theorem Std.DTreeMap.Internal.Impl.getKey!_insertMany_empty_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [BEq α] [LawfulBEqOrd α] [Inhabited α] {l : List ((a : α) × β a)} {k : α} (h : (List.map Sigma.fst l).contains k = false) :
theorem Std.DTreeMap.Internal.Impl.getKey!_insertMany_empty_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [Inhabited α] {l : List ((a : α) × β a)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
theorem Std.DTreeMap.Internal.Impl.getKeyD_insertMany_empty_list_of_contains_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] [BEq α] [LawfulBEqOrd α] {l : List ((a : α) × β a)} {k fallback : α} (h : (List.map Sigma.fst l).contains k = false) :
(empty.insertMany l ).val.getKeyD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_insertMany_empty_list_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] {l : List ((a : α) × β a)} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Sigma.fst l) :
(empty.insertMany l ).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.size_insertMany_empty_list {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] {l : List ((a : α) × β a)} (distinct : List.Pairwise (fun (a b : (a : α) × β a) => ¬compare a.fst b.fst = Ordering.eq) l) :
theorem Std.DTreeMap.Internal.Impl.size_insertMany_empty_list_le {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] {l : List ((a : α) × β a)} :
theorem Std.DTreeMap.Internal.Impl.isEmpty_insertMany_empty_list {α : Type u} {β : αType v} {instOrd : Ord α} [TransOrd α] {l : List ((a : α) × β a)} :
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.insertMany_empty_list_singleton {α : Type u} {instOrd : Ord α} {β : Type v} {k : α} {v : β} :
(insertMany empty [(k, v)] ).val = (insert k v empty ).impl
theorem Std.DTreeMap.Internal.Impl.Const.insertMany_empty_list_cons {α : Type u} {instOrd : Ord α} {β : Type v} {k : α} {v : β} {tl : List (α × β)} :
(insertMany empty ((k, v) :: tl) ).val = (insertMany (insert k v empty ).impl tl ).val
theorem Std.DTreeMap.Internal.Impl.Const.insertMany_empty_list_cons_eq_insertMany! {α : Type u} {instOrd : Ord α} {β : Type v} {k : α} {v : β} {tl : List (α × β)} :
(insertMany empty ((k, v) :: tl) ).val = (insertMany! (insert! k v empty) tl).val
theorem Std.DTreeMap.Internal.Impl.Const.contains_insertMany_empty_list {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] [BEq α] [LawfulBEqOrd α] {l : List (α × β)} {k : α} :
theorem Std.DTreeMap.Internal.Impl.Const.get?_insertMany_empty_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
get? (insertMany empty l ).val k' = some v
theorem Std.DTreeMap.Internal.Impl.Const.get_insertMany_empty_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) {h : contains k' (insertMany empty l ).val = true} :
get (insertMany empty l ).val k' h = v
theorem Std.DTreeMap.Internal.Impl.Const.get!_insertMany_empty_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v : β} [Inhabited β] (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
get! (insertMany empty l ).val k' = v
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertMany_empty_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] [BEq α] [LawfulBEqOrd α] {l : List (α × β)} {k : α} {fallback : β} (contains_eq_false : (List.map Prod.fst l).contains k = false) :
getD (insertMany empty l ).val k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertMany_empty_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) {v fallback : β} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : (k, v) l) :
getD (insertMany empty l ).val k' fallback = v
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertMany_empty_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertMany_empty_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) {h' : contains k' (insertMany empty l ).val = true} :
(insertMany empty l ).val.getKey k' h' = k
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertMany_empty_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] [Inhabited α] {l : List (α × β)} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertMany_empty_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] [BEq α] [LawfulBEqOrd α] {l : List (α × β)} {k fallback : α} (h : (List.map Prod.fst l).contains k = false) :
(insertMany empty l ).val.getKeyD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertMany_empty_list_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) (mem : k List.map Prod.fst l) :
(insertMany empty l ).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.Const.size_insertMany_empty_list {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} (distinct : List.Pairwise (fun (a b : α × β) => ¬compare a.fst b.fst = Ordering.eq) l) :
theorem Std.DTreeMap.Internal.Impl.Const.size_insertMany_empty_list_le {α : Type u} {instOrd : Ord α} {β : Type v} [TransOrd α] {l : List (α × β)} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_insertManyIfNewUnit_empty_list_of_mem {α : Type u} {instOrd : Ord α} [TransOrd α] {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) l) (mem : k l) :
theorem Std.DTreeMap.Internal.Impl.Const.getKey_insertManyIfNewUnit_empty_list_of_mem {α : Type u} {instOrd : Ord α} [TransOrd α] {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) l) (mem : k l) {h' : contains k' (insertManyIfNewUnit empty l ).val = true} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_insertManyIfNewUnit_empty_list_of_mem {α : Type u} {instOrd : Ord α} [TransOrd α] [Inhabited α] {l : List α} {k k' : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) l) (mem : k l) :
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertManyIfNewUnit_empty_list_of_contains_eq_false {α : Type u} {instOrd : Ord α} [TransOrd α] [BEq α] [LawfulBEqOrd α] {l : List α} {k fallback : α} (h' : l.contains k = false) :
(insertManyIfNewUnit empty l ).val.getKeyD k fallback = fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_insertManyIfNewUnit_empty_list_of_mem {α : Type u} {instOrd : Ord α} [TransOrd α] {l : List α} {k k' fallback : α} (k_beq : compare k k' = Ordering.eq) (distinct : List.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) l) (mem : k l) :
(insertManyIfNewUnit empty l ).val.getKeyD k' fallback = k
theorem Std.DTreeMap.Internal.Impl.Const.size_insertManyIfNewUnit_empty_list {α : Type u} {instOrd : Ord α} [TransOrd α] {l : List α} (distinct : List.Pairwise (fun (a b : α) => ¬compare a b = Ordering.eq) l) :
theorem Std.DTreeMap.Internal.Impl.Const.getD_insertManyIfNewUnit_empty_list {α : Type u} {instOrd : Ord α} {l : List α} {k : α} {fallback : Unit} :
getD (insertManyIfNewUnit empty l ).val k fallback = ()
theorem Std.DTreeMap.Internal.Impl.isEmpty_alter_eq_isEmpty_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.isEmpty = ((erase k t ).impl.isEmpty && (f (t.get? k)).isNone)
theorem Std.DTreeMap.Internal.Impl.isEmpty_alter!_eq_isEmpty_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).isEmpty = ((erase! k t).isEmpty && (f (t.get? k)).isNone)
@[simp]
theorem Std.DTreeMap.Internal.Impl.isEmpty_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.isEmpty = ((t.isEmpty || t.size == 1 && contains k t) && (f (t.get? k)).isNone)
@[simp]
theorem Std.DTreeMap.Internal.Impl.isEmpty_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).isEmpty = ((t.isEmpty || t.size == 1 && contains k t) && (f (t.get? k)).isNone)
theorem Std.DTreeMap.Internal.Impl.contains_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
contains k' (alter k f t ).impl = if compare k k' = Ordering.eq then (f (t.get? k)).isSome else contains k' t
theorem Std.DTreeMap.Internal.Impl.contains_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
contains k' (alter! k f t) = if compare k k' = Ordering.eq then (f (t.get? k)).isSome else contains k' t
theorem Std.DTreeMap.Internal.Impl.mem_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
k' (alter k f t ).impl if compare k k' = Ordering.eq then (f (t.get? k)).isSome = true else k' t
theorem Std.DTreeMap.Internal.Impl.mem_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
k' alter! k f t if compare k k' = Ordering.eq then (f (t.get? k)).isSome = true else k' t
theorem Std.DTreeMap.Internal.Impl.mem_alter_of_compare_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} (he : compare k k' = Ordering.eq) :
k' (alter k f t ).impl (f (t.get? k)).isSome = true
theorem Std.DTreeMap.Internal.Impl.mem_alter!_of_compare_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} (he : compare k k' = Ordering.eq) :
k' alter! k f t (f (t.get? k)).isSome = true
@[simp]
theorem Std.DTreeMap.Internal.Impl.contains_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] {k : α} (h : t.WF) {f : Option (β k)Option (β k)} :
contains k (alter k f t ).impl = (f (t.get? k)).isSome
@[simp]
theorem Std.DTreeMap.Internal.Impl.contains_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
contains k (alter! k f t) = (f (t.get? k)).isSome
@[simp]
theorem Std.DTreeMap.Internal.Impl.mem_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
k (alter k f t ).impl (f (t.get? k)).isSome = true
@[simp]
theorem Std.DTreeMap.Internal.Impl.mem_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
k alter! k f t (f (t.get? k)).isSome = true
theorem Std.DTreeMap.Internal.Impl.contains_alter_of_not_compare_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} (he : ¬compare k k' = Ordering.eq) :
contains k' (alter k f t ).impl = contains k' t
theorem Std.DTreeMap.Internal.Impl.contains_alter!_of_not_compare_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} (he : ¬compare k k' = Ordering.eq) :
contains k' (alter! k f t) = contains k' t
theorem Std.DTreeMap.Internal.Impl.mem_alter_of_not_compare_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} (he : ¬compare k k' = Ordering.eq) :
k' (alter k f t ).impl k' t
theorem Std.DTreeMap.Internal.Impl.mem_alter!_of_not_compare_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} (he : ¬compare k k' = Ordering.eq) :
k' alter! k f t k' t
theorem Std.DTreeMap.Internal.Impl.size_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.size = if k t (f (t.get? k)).isNone = true then t.size - 1 else if ¬k t (f (t.get? k)).isSome = true then t.size + 1 else t.size
theorem Std.DTreeMap.Internal.Impl.size_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).size = if k t (f (t.get? k)).isNone = true then t.size - 1 else if ¬k t (f (t.get? k)).isSome = true then t.size + 1 else t.size
theorem Std.DTreeMap.Internal.Impl.size_alter_eq_add_one {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (h₁ : ¬k t) (h₂ : (f (t.get? k)).isSome = true) :
(alter k f t ).impl.size = t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_alter!_eq_add_one {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (h₁ : ¬k t) (h₂ : (f (t.get? k)).isSome = true) :
(alter! k f t).size = t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_alter_eq_sub_one {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (h₁ : k t) (h₂ : (f (t.get? k)).isNone = true) :
(alter k f t ).impl.size = t.size - 1
theorem Std.DTreeMap.Internal.Impl.size_alter!_eq_sub_one {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (h₁ : k t) (h₂ : (f (t.get? k)).isNone = true) :
(alter! k f t).size = t.size - 1
theorem Std.DTreeMap.Internal.Impl.size_alter_eq_self_of_not_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (h₁ : ¬k t) (h₂ : (f (t.get? k)).isNone = true) :
(alter k f t ).impl.size = t.size
theorem Std.DTreeMap.Internal.Impl.size_alter!_eq_self_of_not_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (h₁ : ¬k t) (h₂ : (f (t.get? k)).isNone = true) :
(alter! k f t).size = t.size
theorem Std.DTreeMap.Internal.Impl.size_alter_eq_self_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (h₁ : k t) (h₂ : (f (t.get? k)).isSome = true) :
(alter k f t ).impl.size = t.size
theorem Std.DTreeMap.Internal.Impl.size_alter!_eq_self_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (h₁ : k t) (h₂ : (f (t.get? k)).isSome = true) :
(alter! k f t).size = t.size
theorem Std.DTreeMap.Internal.Impl.size_alter_le_size {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.size t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_alter!_le_size {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).size t.size + 1
theorem Std.DTreeMap.Internal.Impl.size_le_size_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
t.size - 1 (alter k f t ).impl.size
theorem Std.DTreeMap.Internal.Impl.size_le_size_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
t.size - 1 (alter! k f t).size
theorem Std.DTreeMap.Internal.Impl.get?_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.get? k' = if h : compare k k' = Ordering.eq then cast (f (t.get? k)) else t.get? k'
theorem Std.DTreeMap.Internal.Impl.get?_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
(alter! k f t).get? k' = if h : compare k k' = Ordering.eq then cast (f (t.get? k)) else t.get? k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.get?_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.get? k = f (t.get? k)
@[simp]
theorem Std.DTreeMap.Internal.Impl.get?_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).get? k = f (t.get? k)
theorem Std.DTreeMap.Internal.Impl.get_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} {hc : k' (alter k f t ).impl} :
(alter k f t ).impl.get k' hc = if heq : compare k k' = Ordering.eq then cast ((f (t.get? k)).get ) else t.get k'
theorem Std.DTreeMap.Internal.Impl.get_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} {hc : k' alter! k f t} :
(alter! k f t).get k' hc = if heq : compare k k' = Ordering.eq then cast ((f (t.get? k)).get ) else t.get k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.get_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {hc : k (alter k f t ).impl} :
(alter k f t ).impl.get k hc = (f (t.get? k)).get
@[simp]
theorem Std.DTreeMap.Internal.Impl.get_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {hc : k alter! k f t} :
(alter! k f t).get k hc = (f (t.get? k)).get
theorem Std.DTreeMap.Internal.Impl.get!_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} [Inhabited (β k')] {f : Option (β k)Option (β k)} :
(alter k f t ).impl.get! k' = if heq : compare k k' = Ordering.eq then (Option.map (cast ) (f (t.get? k))).get! else t.get! k'
theorem Std.DTreeMap.Internal.Impl.get!_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} [Inhabited (β k')] {f : Option (β k)Option (β k)} :
(alter! k f t).get! k' = if heq : compare k k' = Ordering.eq then (Option.map (cast ) (f (t.get? k))).get! else t.get! k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.get!_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} [Inhabited (β k)] {f : Option (β k)Option (β k)} :
(alter k f t ).impl.get! k = (f (t.get? k)).get!
@[simp]
theorem Std.DTreeMap.Internal.Impl.get!_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} [Inhabited (β k)] {f : Option (β k)Option (β k)} :
(alter! k f t).get! k = (f (t.get? k)).get!
theorem Std.DTreeMap.Internal.Impl.getD_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {fallback : β k'} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.getD k' fallback = if heq : compare k k' = Ordering.eq then (Option.map (cast ) (f (t.get? k))).getD fallback else t.getD k' fallback
theorem Std.DTreeMap.Internal.Impl.getD_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {fallback : β k'} {f : Option (β k)Option (β k)} :
(alter! k f t).getD k' fallback = if heq : compare k k' = Ordering.eq then (Option.map (cast ) (f (t.get? k))).getD fallback else t.getD k' fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.getD_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {fallback : β k} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.getD k fallback = (f (t.get? k)).getD fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.getD_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {fallback : β k} {f : Option (β k)Option (β k)} :
(alter! k f t).getD k fallback = (f (t.get? k)).getD fallback
theorem Std.DTreeMap.Internal.Impl.getKey?_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
theorem Std.DTreeMap.Internal.Impl.getKey?_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
theorem Std.DTreeMap.Internal.Impl.getKey?_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.getKey? k = if (f (t.get? k)).isSome = true then some k else none
theorem Std.DTreeMap.Internal.Impl.getKey?_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).getKey? k = if (f (t.get? k)).isSome = true then some k else none
theorem Std.DTreeMap.Internal.Impl.getKey!_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
theorem Std.DTreeMap.Internal.Impl.getKey!_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} :
theorem Std.DTreeMap.Internal.Impl.getKey!_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.getKey! k = if (f (t.get? k)).isSome = true then k else default
theorem Std.DTreeMap.Internal.Impl.getKey!_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).getKey! k = if (f (t.get? k)).isSome = true then k else default
theorem Std.DTreeMap.Internal.Impl.getKey_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} {hc : k' (alter k f t ).impl} :
(alter k f t ).impl.getKey k' hc = if heq : compare k k' = Ordering.eq then k else t.getKey k'
theorem Std.DTreeMap.Internal.Impl.getKey_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k k' : α} {f : Option (β k)Option (β k)} {hc : k' alter! k f t} :
(alter! k f t).getKey k' hc = if heq : compare k k' = Ordering.eq then k else t.getKey k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.getKey_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {hc : k (alter k f t ).impl} :
(alter k f t ).impl.getKey k hc = k
@[simp]
theorem Std.DTreeMap.Internal.Impl.getKey_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {hc : k alter! k f t} :
(alter! k f t).getKey k hc = k
theorem Std.DTreeMap.Internal.Impl.getKeyD_alter {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' fallback : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.getKeyD k' fallback = if compare k k' = Ordering.eq then if (f (t.get? k)).isSome = true then k else fallback else t.getKeyD k' fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_alter! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' fallback : α} {f : Option (β k)Option (β k)} :
(alter! k f t).getKeyD k' fallback = if compare k k' = Ordering.eq then if (f (t.get? k)).isSome = true then k else fallback else t.getKeyD k' fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.getKeyD_alter_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k fallback : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.getKeyD k fallback = if (f (t.get? k)).isSome = true then k else fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.getKeyD_alter!_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k fallback : α} {f : Option (β k)Option (β k)} :
(alter! k f t).getKeyD k fallback = if (f (t.get? k)).isSome = true then k else fallback
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_alter_eq_isEmpty_erase {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter k f t ).impl.isEmpty = ((erase k t ).impl.isEmpty && (f (get? t k)).isNone)
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_alter!_eq_isEmpty_erase {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter! k f t).isEmpty = ((erase! k t).isEmpty && (f (get? t k)).isNone)
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter k f t ).impl.isEmpty = ((t.isEmpty || t.size == 1 && contains k t) && (f (get? t k)).isNone)
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter! k f t).isEmpty = ((t.isEmpty || t.size == 1 && contains k t) && (f (get? t k)).isNone)
theorem Std.DTreeMap.Internal.Impl.Const.contains_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} :
contains k' (alter k f t ).impl = if compare k k' = Ordering.eq then (f (get? t k)).isSome else contains k' t
theorem Std.DTreeMap.Internal.Impl.Const.contains_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} :
contains k' (alter! k f t) = if compare k k' = Ordering.eq then (f (get? t k)).isSome else contains k' t
theorem Std.DTreeMap.Internal.Impl.Const.mem_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} :
k' (alter k f t ).impl if compare k k' = Ordering.eq then (f (get? t k)).isSome = true else k' t
theorem Std.DTreeMap.Internal.Impl.Const.mem_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} :
k' alter! k f t if compare k k' = Ordering.eq then (f (get? t k)).isSome = true else k' t
theorem Std.DTreeMap.Internal.Impl.Const.mem_alter_of_compare_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} (he : compare k k' = Ordering.eq) :
k' (alter k f t ).impl (f (get? t k)).isSome = true
theorem Std.DTreeMap.Internal.Impl.Const.mem_alter!_of_compare_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} (he : compare k k' = Ordering.eq) :
k' alter! k f t (f (get? t k)).isSome = true
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.contains_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k : α} (h : t.WF) {f : Option βOption β} :
contains k (alter k f t ).impl = (f (get? t k)).isSome
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.contains_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
contains k (alter! k f t) = (f (get? t k)).isSome
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.mem_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
k (alter k f t ).impl (f (get? t k)).isSome = true
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.mem_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
k alter! k f t (f (get? t k)).isSome = true
theorem Std.DTreeMap.Internal.Impl.Const.contains_alter_of_not_compare_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} (he : ¬compare k k' = Ordering.eq) :
contains k' (alter k f t ).impl = contains k' t
theorem Std.DTreeMap.Internal.Impl.Const.contains_alter!_of_not_compare_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} (he : ¬compare k k' = Ordering.eq) :
contains k' (alter! k f t) = contains k' t
theorem Std.DTreeMap.Internal.Impl.Const.mem_alter_of_not_compare_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} (he : ¬compare k k' = Ordering.eq) :
k' (alter k f t ).impl k' t
theorem Std.DTreeMap.Internal.Impl.Const.mem_alter!_of_not_compare_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} (he : ¬compare k k' = Ordering.eq) :
k' alter! k f t k' t
theorem Std.DTreeMap.Internal.Impl.Const.size_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter k f t ).impl.size = if k t (f (get? t k)).isNone = true then t.size - 1 else if ¬k t (f (get? t k)).isSome = true then t.size + 1 else t.size
theorem Std.DTreeMap.Internal.Impl.Const.size_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter! k f t).size = if k t (f (get? t k)).isNone = true then t.size - 1 else if ¬k t (f (get? t k)).isSome = true then t.size + 1 else t.size
theorem Std.DTreeMap.Internal.Impl.Const.size_alter_eq_add_one {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (h₁ : ¬k t) (h₂ : (f (get? t k)).isSome = true) :
(alter k f t ).impl.size = t.size + 1
theorem Std.DTreeMap.Internal.Impl.Const.size_alter!_eq_add_one {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (h₁ : ¬k t) (h₂ : (f (get? t k)).isSome = true) :
(alter! k f t).size = t.size + 1
theorem Std.DTreeMap.Internal.Impl.Const.size_alter_eq_sub_one {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (h₁ : k t) (h₂ : (f (get? t k)).isNone = true) :
(alter k f t ).impl.size = t.size - 1
theorem Std.DTreeMap.Internal.Impl.Const.size_alter!_eq_sub_one {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (h₁ : k t) (h₂ : (f (get? t k)).isNone = true) :
(alter! k f t).size = t.size - 1
theorem Std.DTreeMap.Internal.Impl.Const.size_alter_eq_self_of_not_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (h₁ : ¬k t) (h₂ : (f (get? t k)).isNone = true) :
(alter k f t ).impl.size = t.size
theorem Std.DTreeMap.Internal.Impl.Const.size_alter!_eq_self_of_not_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (h₁ : ¬k t) (h₂ : (f (get? t k)).isNone = true) :
(alter! k f t).size = t.size
theorem Std.DTreeMap.Internal.Impl.Const.size_alter_eq_self_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (h₁ : k t) (h₂ : (f (get? t k)).isSome = true) :
(alter k f t ).impl.size = t.size
theorem Std.DTreeMap.Internal.Impl.Const.size_alter!_eq_self_of_mem {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (h₁ : k t) (h₂ : (f (get? t k)).isSome = true) :
(alter! k f t).size = t.size
theorem Std.DTreeMap.Internal.Impl.Const.size_alter_le_size {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter k f t ).impl.size t.size + 1
theorem Std.DTreeMap.Internal.Impl.Const.size_alter!_le_size {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter! k f t).size t.size + 1
theorem Std.DTreeMap.Internal.Impl.Const.size_le_size_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
t.size - 1 (alter k f t ).impl.size
theorem Std.DTreeMap.Internal.Impl.Const.size_le_size_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
t.size - 1 (alter! k f t).size
theorem Std.DTreeMap.Internal.Impl.Const.get?_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} :
get? (alter k f t ).impl k' = if compare k k' = Ordering.eq then f (get? t k) else get? t k'
theorem Std.DTreeMap.Internal.Impl.Const.get?_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} :
get? (alter! k f t) k' = if compare k k' = Ordering.eq then f (get? t k) else get? t k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get?_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
get? (alter k f t ).impl k = f (get? t k)
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get?_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
get? (alter! k f t) k = f (get? t k)
theorem Std.DTreeMap.Internal.Impl.Const.get_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} {hc : k' (alter k f t ).impl} :
get (alter k f t ).impl k' hc = if heq : compare k k' = Ordering.eq then (f (get? t k)).get else get t k'
theorem Std.DTreeMap.Internal.Impl.Const.get_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} {hc : k' alter! k f t} :
get (alter! k f t) k' hc = if heq : compare k k' = Ordering.eq then (f (get? t k)).get else get t k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} {hc : k (alter k f t ).impl} :
get (alter k f t ).impl k hc = (f (get? t k)).get
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} {hc : k alter! k f t} :
get (alter! k f t) k hc = (f (get? t k)).get
theorem Std.DTreeMap.Internal.Impl.Const.get!_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} [Inhabited β] {f : Option βOption β} :
get! (alter k f t ).impl k' = if compare k k' = Ordering.eq then (f (get? t k)).get! else get! t k'
theorem Std.DTreeMap.Internal.Impl.Const.get!_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} [Inhabited β] {f : Option βOption β} :
get! (alter! k f t) k' = if compare k k' = Ordering.eq then (f (get? t k)).get! else get! t k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get!_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} [Inhabited β] {f : Option βOption β} :
get! (alter k f t ).impl k = (f (get? t k)).get!
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get!_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} [Inhabited β] {f : Option βOption β} :
get! (alter! k f t) k = (f (get? t k)).get!
theorem Std.DTreeMap.Internal.Impl.Const.getD_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {fallback : β} {f : Option βOption β} :
getD (alter k f t ).impl k' fallback = if compare k k' = Ordering.eq then (f (get? t k)).getD fallback else getD t k' fallback
theorem Std.DTreeMap.Internal.Impl.Const.getD_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {fallback : β} {f : Option βOption β} :
getD (alter! k f t) k' fallback = if compare k k' = Ordering.eq then (f (get? t k)).getD fallback else getD t k' fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.getD_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {fallback : β} {f : Option βOption β} :
getD (alter k f t ).impl k fallback = (f (get? t k)).getD fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.getD_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {fallback : β} {f : Option βOption β} :
getD (alter! k f t) k fallback = (f (get? t k)).getD fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' : α} {f : Option βOption β} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter k f t ).impl.getKey? k = if (f (get? t k)).isSome = true then some k else none
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter! k f t).getKey? k = if (f (get? t k)).isSome = true then some k else none
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k k' : α} {f : Option βOption β} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k k' : α} {f : Option βOption β} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter k f t ).impl.getKey! k = if (f (get? t k)).isSome = true then k else default
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter! k f t).getKey! k = if (f (get? t k)).isSome = true then k else default
theorem Std.DTreeMap.Internal.Impl.Const.getKey_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k k' : α} {f : Option βOption β} {hc : k' (alter k f t ).impl} :
(alter k f t ).impl.getKey k' hc = if heq : compare k k' = Ordering.eq then k else t.getKey k'
theorem Std.DTreeMap.Internal.Impl.Const.getKey_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k k' : α} {f : Option βOption β} {hc : k' alter! k f t} :
(alter! k f t).getKey k' hc = if heq : compare k k' = Ordering.eq then k else t.getKey k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.getKey_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option βOption β} {hc : k (alter k f t ).impl} :
(alter k f t ).impl.getKey k hc = k
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.getKey_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option βOption β} {hc : k alter! k f t} :
(alter! k f t).getKey k hc = k
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_alter {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' fallback : α} {f : Option βOption β} :
(alter k f t ).impl.getKeyD k' fallback = if compare k k' = Ordering.eq then if (f (get? t k)).isSome = true then k else fallback else t.getKeyD k' fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_alter! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k k' fallback : α} {f : Option βOption β} :
(alter! k f t).getKeyD k' fallback = if compare k k' = Ordering.eq then if (f (get? t k)).isSome = true then k else fallback else t.getKeyD k' fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_alter_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k fallback : α} {f : Option βOption β} :
(alter k f t ).impl.getKeyD k fallback = if (f (get? t k)).isSome = true then k else fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_alter!_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k fallback : α} {f : Option βOption β} :
(alter! k f t).getKeyD k fallback = if (f (get? t k)).isSome = true then k else fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.isEmpty_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} :
theorem Std.DTreeMap.Internal.Impl.contains_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : β kβ k} :
contains k' (modify k f t) = contains k' t
theorem Std.DTreeMap.Internal.Impl.mem_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : β kβ k} :
k' modify k f t k' t
theorem Std.DTreeMap.Internal.Impl.size_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} :
(modify k f t).size = t.size
theorem Std.DTreeMap.Internal.Impl.get?_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : β kβ k} :
(modify k f t).get? k' = if h : compare k k' = Ordering.eq then cast (Option.map f (t.get? k)) else t.get? k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.get?_modify_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} :
(modify k f t).get? k = Option.map f (t.get? k)
theorem Std.DTreeMap.Internal.Impl.get_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : β kβ k} {hc : k' modify k f t} :
(modify k f t).get k' hc = if heq : compare k k' = Ordering.eq then cast (f (t.get k )) else t.get k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.get_modify_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} {hc : k modify k f t} :
(modify k f t).get k hc = f (t.get k )
theorem Std.DTreeMap.Internal.Impl.get!_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} [hi : Inhabited (β k')] {f : β kβ k} :
(modify k f t).get! k' = if heq : compare k k' = Ordering.eq then (Option.map (cast ) (Option.map f (t.get? k))).get! else t.get! k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.get!_modify_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} [Inhabited (β k)] {f : β kβ k} :
(modify k f t).get! k = (Option.map f (t.get? k)).get!
theorem Std.DTreeMap.Internal.Impl.getD_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {fallback : β k'} {f : β kβ k} :
(modify k f t).getD k' fallback = if heq : compare k k' = Ordering.eq then (Option.map (cast ) (Option.map f (t.get? k))).getD fallback else t.getD k' fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.getD_modify_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {fallback : β k} {f : β kβ k} :
(modify k f t).getD k fallback = (Option.map f (t.get? k)).getD fallback
theorem Std.DTreeMap.Internal.Impl.getKey?_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' : α} {f : β kβ k} :
theorem Std.DTreeMap.Internal.Impl.getKey?_modify_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} :
(modify k f t).getKey? k = if k t then some k else none
theorem Std.DTreeMap.Internal.Impl.getKey!_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) [Inhabited α] {k k' : α} {f : β kβ k} :
theorem Std.DTreeMap.Internal.Impl.getKey!_modify_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) [Inhabited α] {k : α} {f : β kβ k} :
(modify k f t).getKey! k = if k t then k else default
theorem Std.DTreeMap.Internal.Impl.getKey_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) [Inhabited α] {k k' : α} {f : β kβ k} {hc : k' modify k f t} :
(modify k f t).getKey k' hc = if compare k k' = Ordering.eq then k else t.getKey k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.getKey_modify_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) [Inhabited α] {k : α} {f : β kβ k} {hc : k modify k f t} :
(modify k f t).getKey k hc = k
theorem Std.DTreeMap.Internal.Impl.getKeyD_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k k' fallback : α} {f : β kβ k} :
(modify k f t).getKeyD k' fallback = if compare k k' = Ordering.eq then if k t then k else fallback else t.getKeyD k' fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_modify_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) [Inhabited α] {k fallback : α} {f : β kβ k} :
(modify k f t).getKeyD k fallback = if k t then k else fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.isEmpty_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.contains_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k k' : α} {f : ββ} :
contains k' (modify k f t) = contains k' t
theorem Std.DTreeMap.Internal.Impl.Const.mem_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k k' : α} {f : ββ} :
k' modify k f t k' t
theorem Std.DTreeMap.Internal.Impl.Const.size_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k : α} {f : ββ} :
(modify k f t).size = t.size
theorem Std.DTreeMap.Internal.Impl.Const.get?_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k k' : α} {f : ββ} :
get? (modify k f t) k' = if compare k k' = Ordering.eq then Option.map f (get? t k) else get? t k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get?_modify_self {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k : α} {f : ββ} :
get? (modify k f t) k = Option.map f (get? t k)
theorem Std.DTreeMap.Internal.Impl.Const.get_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k k' : α} {f : ββ} {hc : k' modify k f t} :
get (modify k f t) k' hc = if heq : compare k k' = Ordering.eq then f (get t k ) else get t k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get_modify_self {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k : α} {f : ββ} {hc : k modify k f t} :
get (modify k f t) k hc = f (get t k )
theorem Std.DTreeMap.Internal.Impl.Const.get!_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k k' : α} [hi : Inhabited β] {f : ββ} :
get! (modify k f t) k' = if compare k k' = Ordering.eq then (Option.map f (get? t k)).get! else get! t k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.get!_modify_self {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k : α} [Inhabited β] {f : ββ} :
get! (modify k f t) k = (Option.map f (get? t k)).get!
theorem Std.DTreeMap.Internal.Impl.Const.getD_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k k' : α} {fallback : β} {f : ββ} :
getD (modify k f t) k' fallback = if compare k k' = Ordering.eq then (Option.map f (get? t k)).getD fallback else getD t k' fallback
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.getD_modify_self {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k : α} {fallback : β} {f : ββ} :
getD (modify k f t) k fallback = (Option.map f (get? t k)).getD fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k k' : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey?_modify_self {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k : α} {f : ββ} :
(modify k f t).getKey? k = if k t then some k else none
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) [Inhabited α] {k k' : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.getKey!_modify_self {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) [Inhabited α] {k : α} {f : ββ} :
(modify k f t).getKey! k = if k t then k else default
theorem Std.DTreeMap.Internal.Impl.Const.getKey_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) [Inhabited α] {k k' : α} {f : ββ} {hc : k' modify k f t} :
(modify k f t).getKey k' hc = if compare k k' = Ordering.eq then k else t.getKey k'
@[simp]
theorem Std.DTreeMap.Internal.Impl.Const.getKey_modify_self {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) [Inhabited α] {k : α} {f : ββ} {hc : k modify k f t} :
(modify k f t).getKey k hc = k
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_modify {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) {k k' fallback : α} {f : ββ} :
(modify k f t).getKeyD k' fallback = if compare k k' = Ordering.eq then if k t then k else fallback else t.getKeyD k' fallback
theorem Std.DTreeMap.Internal.Impl.Const.getKeyD_modify_self {α : Type u} {instOrd : Ord α} [TransOrd α] {β : Type v} {t : Impl α fun (x : α) => β} (h : t.WF) [Inhabited α] {k fallback : α} {f : ββ} :
(modify k f t).getKeyD k fallback = if k t then k else fallback
theorem Std.DTreeMap.Internal.Impl.minKey?_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = true) :
theorem Std.DTreeMap.Internal.Impl.minKey?_eq_none_iff {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.minKey?_eq_some_iff_getKey?_eq_self_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} :
t.minKey? = some km t.getKey? km = some km ∀ (k : α), k t(compare km k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_eq_some_iff_mem_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {km : α} :
t.minKey? = some km km t ∀ (k : α), k t(compare km k).isLE = true
theorem Std.DTreeMap.Internal.Impl.isNone_minKey?_eq_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_eq_not_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_iff_isEmpty_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.minKey?_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.minKey? = some (t.minKey?.elim k fun (k' : α) => if (compare k k').isLE = true then k else k')
theorem Std.DTreeMap.Internal.Impl.minKey?_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).minKey? = some (t.minKey?.elim k fun (k' : α) => if (compare k k').isLE = true then k else k')
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.minKey?_insert_le_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {km kmi : α} (hkm : t.minKey? = some km) (hkmi : (insert k v t ).impl.minKey?.get = kmi) :
(compare kmi km).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_insert!_le_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {km kmi : α} (hkm : t.minKey? = some km) (hkmi : (insert! k v t).minKey?.get = kmi) :
(compare kmi km).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_insert_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {kmi : α} (hkmi : (insert k v t ).impl.minKey?.get = kmi) :
(compare kmi k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_insert!_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {kmi : α} (hkmi : (insert! k v t).minKey?.get = kmi) :
(compare kmi k).isLE = true
theorem Std.DTreeMap.Internal.Impl.contains_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} (hkm : t.minKey? = some km) :
theorem Std.DTreeMap.Internal.Impl.minKey?_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} (hkm : t.minKey? = some km) :
km t
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : contains k t = true) :
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
k tt.minKey?.isSome = true
theorem Std.DTreeMap.Internal.Impl.minKey?_le_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k km : α} (hc : contains k t = true) (hkm : t.minKey?.get = km) :
theorem Std.DTreeMap.Internal.Impl.minKey?_le_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k km : α} (hc : k t) (hkm : t.minKey?.get = km) :
theorem Std.DTreeMap.Internal.Impl.le_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] {k : α} (h : t.WF) :
(∀ (k' : α), t.minKey? = some k'(compare k k').isLE = true) ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.getKey?_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} (hkm : t.minKey? = some km) :
t.getKey? km = some km
theorem Std.DTreeMap.Internal.Impl.getKey_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} {hc : contains km t = true} (hkm : t.minKey?.get = km) :
t.getKey km hc = km
theorem Std.DTreeMap.Internal.Impl.getKey!_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {km : α} (hkm : t.minKey? = some km) :
t.getKey! km = km
theorem Std.DTreeMap.Internal.Impl.getKeyD_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km fallback : α} (hkm : t.minKey? = some km) :
t.getKeyD km fallback = km
@[simp]
theorem Std.DTreeMap.Internal.Impl.minKey?_bind_getKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.minKey?_erase_eq_iff_not_compare_eq_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
(erase k t ).impl.minKey? = t.minKey? ∀ {km : α}, t.minKey? = some km¬compare k km = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.minKey?_erase!_eq_iff_not_compare_eq_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
(erase! k t).minKey? = t.minKey? ∀ {km : α}, t.minKey? = some km¬compare k km = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.minKey?_erase_eq_of_not_compare_eq_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : ∀ {km : α}, t.minKey? = some km¬compare k km = Ordering.eq) :
(erase k t ).impl.minKey? = t.minKey?
theorem Std.DTreeMap.Internal.Impl.minKey?_erase!_eq_of_not_compare_eq_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : ∀ {km : α}, t.minKey? = some km¬compare k km = Ordering.eq) :
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_of_isSome_minKey?_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hs : (erase k t ).impl.minKey?.isSome = true) :
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_of_isSome_minKey?_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hs : (erase! k t).minKey?.isSome = true) :
theorem Std.DTreeMap.Internal.Impl.minKey?_le_minKey?_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k km kme : α} (hkme : (erase k t ).impl.minKey? = some kme) (hkm : t.minKey?.get = km) :
(compare km kme).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_le_minKey?_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k km kme : α} (hkme : (erase! k t).minKey? = some kme) (hkm : t.minKey?.get = km) :
(compare km kme).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew k v t ).impl.minKey? = some (t.minKey?.elim k fun (k' : α) => if compare k k' = Ordering.lt then k else k')
theorem Std.DTreeMap.Internal.Impl.minKey?_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew! k v t).minKey? = some (t.minKey?.elim k fun (k' : α) => if compare k k' = Ordering.lt then k else k')
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.isSome_minKey?_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.minKey?_insertIfNew_le_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {km kmi : α} (hkm : t.minKey? = some km) (hkmi : (insertIfNew k v t ).impl.minKey?.get = kmi) :
(compare kmi km).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_insertIfNew!_le_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {km kmi : α} (hkm : t.minKey? = some km) (hkmi : (insertIfNew! k v t).minKey?.get = kmi) :
(compare kmi km).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_insertIfNew_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {kmi : α} (hkmi : (insertIfNew k v t ).impl.minKey?.get = kmi) :
(compare kmi k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_insertIfNew!_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {kmi : α} (hkmi : (insertIfNew! k v t).minKey?.get = kmi) :
(compare kmi k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_eq_head?_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.minKey?_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] {k : α} {f : β kβ k} (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.minKey?_alter_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.minKey? = some k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey?_alter!_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).minKey? = some k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.minKey?_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} :
(modify k f t).minKey? = Option.map (fun (km : α) => if compare km k = Ordering.eq then k else km) t.minKey?
theorem Std.DTreeMap.Internal.Impl.Const.minKey?_modify_eq_minKey? {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.isSome_minKey?_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k : α} {f : ββ} (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.Const.isSome_minKey?_modify_eq_isSome {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.compare_minKey?_modify_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} {km kmm : α} (hkm : t.minKey? = some km) (hkmm : (modify k f t).minKey?.get = kmm) :
theorem Std.DTreeMap.Internal.Impl.Const.minKey?_alter_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter k f t ).impl.minKey? = some k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.minKey?_alter!_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter! k f t).minKey? = some k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_eq_get_minKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.minKey he = t.minKey?.get
theorem Std.DTreeMap.Internal.Impl.minKey?_eq_some_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.minKey? = some (t.minKey he)
theorem Std.DTreeMap.Internal.Impl.minKey_eq_iff_getKey?_eq_self_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} {km : α} :
t.minKey he = km t.getKey? km = some km ∀ (k : α), k t(compare km k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_eq_iff_mem_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {he : t.isEmpty = false} {km : α} :
t.minKey he = km km t ∀ (k : α), k t(compare km k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.minKey = t.minKey?.elim k fun (k' : α) => if (compare k k').isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.minKey_insert_le_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {he : t.isEmpty = false} :
(compare ((insert k v t ).impl.minKey ) (t.minKey he)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_insert_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(compare ((insert k v t ).impl.minKey ) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.contains_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
theorem Std.DTreeMap.Internal.Impl.minKey_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.minKey he t
theorem Std.DTreeMap.Internal.Impl.minKey_le_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : contains k t = true) :
(compare (t.minKey ) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_le_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : k t) :
(compare (t.minKey ) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.le_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {he : t.isEmpty = false} :
(compare k (t.minKey he)).isLE = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.getKey?_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.getKey? (t.minKey he) = some (t.minKey he)
theorem Std.DTreeMap.Internal.Impl.getKey_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} {hc : contains (t.minKey he) t = true} :
t.getKey (t.minKey he) hc = t.minKey he
theorem Std.DTreeMap.Internal.Impl.getKey!_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {he : t.isEmpty = false} :
t.getKey! (t.minKey he) = t.minKey he
theorem Std.DTreeMap.Internal.Impl.getKeyD_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} {fallback : α} :
t.getKeyD (t.minKey he) fallback = t.minKey he
theorem Std.DTreeMap.Internal.Impl.minKey_erase_eq_iff_not_compare_eq_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {he : (erase k t ).impl.isEmpty = false} :
(erase k t ).impl.minKey he = t.minKey ¬compare k (t.minKey ) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.minKey_erase_eq_of_not_compare_eq_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {he : (erase k t ).impl.isEmpty = false} (hc : ¬compare k (t.minKey ) = Ordering.eq) :
(erase k t ).impl.minKey he = t.minKey
theorem Std.DTreeMap.Internal.Impl.minKey_le_minKey_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {he : (erase k t ).impl.isEmpty = false} :
(compare (t.minKey ) ((erase k t ).impl.minKey he)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew k v t ).impl.minKey = t.minKey?.elim k fun (k' : α) => if compare k k' = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.minKey_insertIfNew_le_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {he : t.isEmpty = false} :
(compare ((insertIfNew k v t ).impl.minKey ) (t.minKey he)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_insertIfNew_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(compare ((insertIfNew k v t ).impl.minKey ) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_eq_head_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.minKey he = t.keys.head
theorem Std.DTreeMap.Internal.Impl.minKey_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} {he : (modify k f t).isEmpty = false} :
(modify k f t).minKey he = t.minKey
theorem Std.DTreeMap.Internal.Impl.minKey_alter_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {he : (alter k f t ).impl.isEmpty = false} :
(alter k f t ).impl.minKey he = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.minKey_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} {he : (modify k f t).isEmpty = false} :
(modify k f t).minKey he = if compare (t.minKey ) k = Ordering.eq then k else t.minKey
theorem Std.DTreeMap.Internal.Impl.Const.minKey_modify_eq_minKey {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : ββ} {he : (modify k f t).isEmpty = false} :
(modify k f t).minKey he = t.minKey
theorem Std.DTreeMap.Internal.Impl.Const.compare_minKey_modify_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} {he : (modify k f t).isEmpty = false} :
compare ((modify k f t).minKey he) (t.minKey ) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.Const.minKey_alter_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} {he : (alter k f t ).impl.isEmpty = false} :
(alter k f t ).impl.minKey he = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_eq_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {he : t.isEmpty = false} :
theorem Std.DTreeMap.Internal.Impl.minKey?_eq_some_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.minKey!_eq_default {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = true) :
theorem Std.DTreeMap.Internal.Impl.minKey!_eq_iff_getKey?_eq_self_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {km : α} :
t.minKey! = km t.getKey? km = some km ∀ (k : α), k t(compare km k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey!_eq_iff_mem_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {km : α} :
t.minKey! = km km t ∀ (k : α), k t(compare km k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey!_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.minKey! = t.minKey?.elim k fun (k' : α) => if (compare k k').isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.minKey!_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).minKey! = t.minKey?.elim k fun (k' : α) => if (compare k k').isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.minKey!_insert_le_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.minKey!_insert!_le_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.minKey!_insert_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(compare (insert k v t ).impl.minKey! k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey!_insert!_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.minKey!_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.minKey!_le_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (hc : contains k t = true) :
theorem Std.DTreeMap.Internal.Impl.minKey!_le_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (hc : k t) :
theorem Std.DTreeMap.Internal.Impl.le_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} :
(compare k t.minKey!).isLE = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.getKey?_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.getKey_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {he : contains t.minKey! t = true} :
theorem Std.DTreeMap.Internal.Impl.getKey_minKey!_eq_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {hc : contains t.minKey! t = true} :
t.getKey t.minKey! hc = t.minKey
theorem Std.DTreeMap.Internal.Impl.getKey!_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.getKeyD_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
t.getKeyD t.minKey! fallback = t.minKey!
theorem Std.DTreeMap.Internal.Impl.minKey!_erase_eq_iff_not_compare_minKey!_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.minKey!_erase!_eq_iff_not_compare_minKey!_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.minKey!_erase_eq_of_not_compare_minKey!_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) (heq : ¬compare k t.minKey! = Ordering.eq) :
(erase k t ).impl.minKey! = t.minKey!
theorem Std.DTreeMap.Internal.Impl.minKey!_erase!_eq_of_not_compare_minKey!_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) (heq : ¬compare k t.minKey! = Ordering.eq) :
theorem Std.DTreeMap.Internal.Impl.minKey!_le_minKey!_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.minKey!_le_minKey!_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.minKey!_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew k v t ).impl.minKey! = t.minKey?.elim k fun (k' : α) => if compare k k' = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.minKey!_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew! k v t).minKey! = t.minKey?.elim k fun (k' : α) => if compare k k' = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.minKey!_insertIfNew_le_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.minKey!_insertIfNew!_le_minKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.minKey!_insertIfNew_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.minKey!_insertIfNew!_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.minKey!_eq_head!_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.minKey!_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : β kβ k} :
theorem Std.DTreeMap.Internal.Impl.minKey!_alter_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (he : (alter k f t ).impl.isEmpty = false) :
(alter k f t ).impl.minKey! = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey!_alter!_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (he : (alter! k f t).isEmpty = false) :
(alter! k f t).minKey! = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.minKey!_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : ββ} (he : (modify k f t).isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.Const.minKey!_modify_eq_minKey! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.compare_minKey!_modify_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.minKey!_alter_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option βOption β} (he : (alter k f t ).impl.isEmpty = false) :
(alter k f t ).impl.minKey! = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.minKey!_alter!_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option βOption β} (he : (alter! k f t).isEmpty = false) :
(alter! k f t).minKey! = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.minKey_eq_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} {fallback : α} :
t.minKey he = t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.minKey?_eq_some_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} (he : t.isEmpty = false) :
t.minKey? = some (t.minKeyD fallback)
theorem Std.DTreeMap.Internal.Impl.minKeyD_eq_fallback {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} (he : t.isEmpty = true) :
t.minKeyD fallback = fallback
theorem Std.DTreeMap.Internal.Impl.minKey!_eq_minKeyD_default {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.minKeyD_eq_iff_getKey?_eq_self_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {km fallback : α} :
t.minKeyD fallback = km t.getKey? km = some km ∀ (k : α), k t(compare km k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_eq_iff_mem_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) (he : t.isEmpty = false) {km fallback : α} :
t.minKeyD fallback = km km t ∀ (k : α), k t(compare km k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(insert k v t ).impl.minKeyD fallback = t.minKey?.elim k fun (k' : α) => if (compare k k').isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.minKeyD_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(insert! k v t).minKeyD fallback = t.minKey?.elim k fun (k' : α) => if (compare k k').isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.minKeyD_insert_le_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} {fallback : α} :
(compare ((insert k v t ).impl.minKeyD fallback) (t.minKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_insert!_le_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} {fallback : α} :
(compare ((insert! k v t).minKeyD fallback) (t.minKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_insert_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(compare ((insert k v t ).impl.minKeyD fallback) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_insert!_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(compare ((insert! k v t).minKeyD fallback) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.contains_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
contains (t.minKeyD fallback) t = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
t.minKeyD fallback t
theorem Std.DTreeMap.Internal.Impl.minKeyD_le_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : contains k t = true) {fallback : α} :
(compare (t.minKeyD fallback) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_le_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : k t) {fallback : α} :
(compare (t.minKeyD fallback) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.le_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k fallback : α} :
(compare k (t.minKeyD fallback)).isLE = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.getKey?_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
t.getKey? (t.minKeyD fallback) = some (t.minKeyD fallback)
theorem Std.DTreeMap.Internal.Impl.getKey_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} {he : contains (t.minKeyD fallback) t = true} :
t.getKey (t.minKeyD fallback) he = t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.getKey_minKeyD_eq_minKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} {hc : contains (t.minKeyD fallback) t = true} :
t.getKey (t.minKeyD fallback) hc = t.minKey
theorem Std.DTreeMap.Internal.Impl.getKey!_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
t.getKey! (t.minKeyD fallback) = t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {fallback fallback' : α} :
t.getKeyD (t.minKeyD fallback) fallback' = t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.minKeyD_erase_eq_iff_not_compare_minKeyD_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} (he : (erase k t ).impl.isEmpty = false) :
(erase k t ).impl.minKeyD fallback = t.minKeyD fallback ¬compare k (t.minKeyD fallback) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.minKeyD_erase!_eq_iff_not_compare_minKeyD_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} (he : (erase! k t).isEmpty = false) :
(erase! k t).minKeyD fallback = t.minKeyD fallback ¬compare k (t.minKeyD fallback) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.minKeyD_erase_eq_of_not_compare_minKeyD_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} (he : (erase k t ).impl.isEmpty = false) (heq : ¬compare k (t.minKeyD fallback) = Ordering.eq) :
(erase k t ).impl.minKeyD fallback = t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.minKeyD_erase!_eq_of_not_compare_minKeyD_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} (he : (erase! k t).isEmpty = false) (heq : ¬compare k (t.minKeyD fallback) = Ordering.eq) :
(erase! k t).minKeyD fallback = t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.minKeyD_le_minKeyD_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) {fallback : α} :
(compare (t.minKeyD fallback) ((erase k t ).impl.minKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_le_minKeyD_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) {fallback : α} :
(compare (t.minKeyD fallback) ((erase! k t).minKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(insertIfNew k v t ).impl.minKeyD fallback = t.minKey?.elim k fun (k' : α) => if compare k k' = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.minKeyD_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(insertIfNew! k v t).minKeyD fallback = t.minKey?.elim k fun (k' : α) => if compare k k' = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.minKeyD_insertIfNew_le_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} {fallback : α} :
(compare ((insertIfNew k v t ).impl.minKeyD fallback) (t.minKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_insertIfNew!_le_minKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} {fallback : α} :
(compare ((insertIfNew! k v t).minKeyD fallback) (t.minKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_insertIfNew_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(compare ((insertIfNew k v t ).impl.minKeyD fallback) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_insertIfNew!_le_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(compare ((insertIfNew! k v t).minKeyD fallback) k).isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_eq_headD_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} :
t.minKeyD fallback = t.keys.headD fallback
theorem Std.DTreeMap.Internal.Impl.minKeyD_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} {fallback : α} :
(modify k f t).minKeyD fallback = t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.minKeyD_alter_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {fallback : α} (he : (alter k f t ).impl.isEmpty = false) :
(alter k f t ).impl.minKeyD fallback = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.minKeyD_alter!_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {fallback : α} (he : (alter! k f t).isEmpty = false) :
(alter! k f t).minKeyD fallback = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.minKeyD_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} (he : (modify k f t).isEmpty = false) {fallback : α} :
(modify k f t).minKeyD fallback = if compare (t.minKeyD fallback) k = Ordering.eq then k else t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.Const.minKeyD_modify_eq_minKeyD {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : ββ} {fallback : α} :
(modify k f t).minKeyD fallback = t.minKeyD fallback
theorem Std.DTreeMap.Internal.Impl.Const.compare_minKeyD_modify_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} {fallback : α} :
compare ((modify k f t).minKeyD fallback) (t.minKeyD fallback) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.Const.minKeyD_alter_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (he : (alter k f t ).impl.isEmpty = false) {fallback : α} :
(alter k f t ).impl.minKeyD fallback = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.minKeyD_alter!_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (he : (alter! k f t).isEmpty = false) {fallback : α} :
(alter! k f t).minKeyD fallback = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k k').isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_of_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = true) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_eq_none_iff {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_eq_some_iff_getKey?_eq_self_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} :
t.maxKey? = some km t.getKey? km = some km ∀ (k : α), k t(compare k km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_eq_some_iff_mem_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {km : α} :
t.maxKey? = some km km t ∀ (k : α), k t(compare k km).isLE = true
theorem Std.DTreeMap.Internal.Impl.isNone_maxKey?_eq_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_eq_not_isEmpty {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_iff_isEmpty_eq_false {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.maxKey? = some (t.maxKey?.elim k fun (k' : α) => if (compare k' k).isLE = true then k else k')
theorem Std.DTreeMap.Internal.Impl.maxKey?_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).maxKey? = some (t.maxKey?.elim k fun (k' : α) => if (compare k' k).isLE = true then k else k')
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.maxKey?_le_maxKey?_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {km kmi : α} (hkm : t.maxKey? = some km) (hkmi : (insert k v t ).impl.maxKey?.get = kmi) :
(compare km kmi).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_le_maxKey?_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {km kmi : α} (hkm : t.maxKey? = some km) (hkmi : (insert! k v t).maxKey?.get = kmi) :
(compare km kmi).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey?_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {kmi : α} (hkmi : (insert k v t ).impl.maxKey?.get = kmi) :
(compare k kmi).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey?_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {kmi : α} (hkmi : (insert! k v t).maxKey?.get = kmi) :
(compare k kmi).isLE = true
theorem Std.DTreeMap.Internal.Impl.contains_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} (hkm : t.maxKey? = some km) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} (hkm : t.maxKey? = some km) :
km t
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : contains k t = true) :
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
k tt.maxKey?.isSome = true
theorem Std.DTreeMap.Internal.Impl.le_maxKey?_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k km : α} (hc : contains k t = true) (hkm : t.maxKey?.get = km) :
theorem Std.DTreeMap.Internal.Impl.le_maxKey?_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k km : α} (hc : k t) (hkm : t.maxKey?.get = km) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] {k : α} (h : t.WF) :
(∀ (k' : α), t.maxKey? = some k'(compare k' k).isLE = true) ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.getKey?_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} (hkm : t.maxKey? = some km) :
t.getKey? km = some km
theorem Std.DTreeMap.Internal.Impl.getKey_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km : α} {hc : contains km t = true} (hkm : t.maxKey?.get = km) :
t.getKey km hc = km
theorem Std.DTreeMap.Internal.Impl.getKey!_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {km : α} (hkm : t.maxKey? = some km) :
t.getKey! km = km
theorem Std.DTreeMap.Internal.Impl.getKeyD_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {km fallback : α} (hkm : t.maxKey? = some km) :
t.getKeyD km fallback = km
@[simp]
theorem Std.DTreeMap.Internal.Impl.maxKey?_bind_getKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_erase_eq_iff_not_compare_eq_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
(erase k t ).impl.maxKey? = t.maxKey? ∀ {km : α}, t.maxKey? = some km¬compare k km = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.maxKey?_erase!_eq_iff_not_compare_eq_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} :
(erase! k t).maxKey? = t.maxKey? ∀ {km : α}, t.maxKey? = some km¬compare k km = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.maxKey?_erase_eq_of_not_compare_eq_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : ∀ {km : α}, t.maxKey? = some km¬compare k km = Ordering.eq) :
(erase k t ).impl.maxKey? = t.maxKey?
theorem Std.DTreeMap.Internal.Impl.maxKey?_erase!_eq_of_not_compare_eq_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : ∀ {km : α}, t.maxKey? = some km¬compare k km = Ordering.eq) :
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_of_isSome_maxKey?_erase {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hs : (erase k t ).impl.maxKey?.isSome = true) :
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_of_isSome_maxKey?_erase! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hs : (erase! k t).maxKey?.isSome = true) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_erase_le_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k km kme : α} (hkme : (erase k t ).impl.maxKey? = some kme) (hkm : t.maxKey?.get = km) :
(compare kme km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_erase!_le_maxKey? {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k km kme : α} (hkme : (erase! k t).maxKey? = some kme) (hkm : t.maxKey?.get = km) :
(compare kme km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew k v t ).impl.maxKey? = some (t.maxKey?.elim k fun (k' : α) => if compare k' k = Ordering.lt then k else k')
theorem Std.DTreeMap.Internal.Impl.maxKey?_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew! k v t).maxKey? = some (t.maxKey?.elim k fun (k' : α) => if compare k' k = Ordering.lt then k else k')
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.isSome_maxKey?_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.maxKey?_le_maxKey?_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {km kmi : α} (hkm : t.maxKey? = some km) (hkmi : (insertIfNew k v t ).impl.maxKey?.get = kmi) :
(compare km kmi).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_le_maxKey?_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {km kmi : α} (hkm : t.maxKey? = some km) (hkmi : (insertIfNew! k v t).maxKey?.get = kmi) :
(compare km kmi).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey?_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {kmi : α} (hkmi : (insertIfNew k v t ).impl.maxKey?.get = kmi) :
(compare k kmi).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey?_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {kmi : α} (hkmi : (insertIfNew! k v t).maxKey?.get = kmi) :
(compare k kmi).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_eq_getLast?_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] {k : α} {f : β kβ k} (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.maxKey?_alter_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter k f t ).impl.maxKey? = some k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_alter!_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} :
(alter! k f t).maxKey? = some k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.maxKey?_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} :
(modify k f t).maxKey? = Option.map (fun (km : α) => if compare km k = Ordering.eq then k else km) t.maxKey?
theorem Std.DTreeMap.Internal.Impl.Const.maxKey?_modify_eq_maxKey? {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.isSome_maxKey?_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] {k : α} {f : ββ} (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.Const.isSome_maxKey?_modify_eq_isSome {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.compare_maxKey?_modify_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} {km kmm : α} (hkm : t.maxKey? = some km) (hkmm : (modify k f t).maxKey?.get = kmm) :
theorem Std.DTreeMap.Internal.Impl.Const.maxKey?_alter_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter k f t ).impl.maxKey? = some k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.maxKey?_alter!_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} :
(alter! k f t).maxKey? = some k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey?_eq_some_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.maxKey? = some (t.maxKey he)
theorem Std.DTreeMap.Internal.Impl.maxKey_eq_iff_getKey?_eq_self_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} {km : α} :
t.maxKey he = km t.getKey? km = some km ∀ (k : α), k t(compare k km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey_eq_iff_mem_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {he : t.isEmpty = false} {km : α} :
t.maxKey he = km km t ∀ (k : α), k t(compare k km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.maxKey = t.maxKey?.elim k fun (k' : α) => if (compare k' k).isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKey_le_maxKey_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {he : t.isEmpty = false} :
(compare (t.maxKey he) ((insert k v t ).impl.maxKey )).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(compare k ((insert k v t ).impl.maxKey )).isLE = true
theorem Std.DTreeMap.Internal.Impl.contains_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
theorem Std.DTreeMap.Internal.Impl.maxKey_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.maxKey he t
theorem Std.DTreeMap.Internal.Impl.le_maxKey_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : contains k t = true) :
(compare k (t.maxKey )).isLE = true
theorem Std.DTreeMap.Internal.Impl.le_maxKey_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : k t) :
(compare k (t.maxKey )).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {he : t.isEmpty = false} :
(compare (t.maxKey he) k).isLE = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.getKey?_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.getKey? (t.maxKey he) = some (t.maxKey he)
theorem Std.DTreeMap.Internal.Impl.getKey_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} {hc : contains (t.maxKey he) t = true} :
t.getKey (t.maxKey he) hc = t.maxKey he
theorem Std.DTreeMap.Internal.Impl.getKey!_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {he : t.isEmpty = false} :
t.getKey! (t.maxKey he) = t.maxKey he
theorem Std.DTreeMap.Internal.Impl.getKeyD_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} {fallback : α} :
t.getKeyD (t.maxKey he) fallback = t.maxKey he
theorem Std.DTreeMap.Internal.Impl.maxKey_erase_eq_iff_not_compare_eq_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {he : (erase k t ).impl.isEmpty = false} :
(erase k t ).impl.maxKey he = t.maxKey ¬compare k (t.maxKey ) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.maxKey_erase_eq_of_not_compare_eq_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {he : (erase k t ).impl.isEmpty = false} (hc : ¬compare k (t.maxKey ) = Ordering.eq) :
(erase k t ).impl.maxKey he = t.maxKey
theorem Std.DTreeMap.Internal.Impl.maxKey_erase_le_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {he : (erase k t ).impl.isEmpty = false} :
(compare ((erase k t ).impl.maxKey he) (t.maxKey )).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew k v t ).impl.maxKey = t.maxKey?.elim k fun (k' : α) => if compare k' k = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKey_le_maxKey_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {he : t.isEmpty = false} :
(compare (t.maxKey he) ((insertIfNew k v t ).impl.maxKey )).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} :
(compare k ((insertIfNew k v t ).impl.maxKey )).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey_eq_getLast_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} :
t.maxKey he = t.keys.getLast
theorem Std.DTreeMap.Internal.Impl.maxKey_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} {he : (modify k f t).isEmpty = false} :
(modify k f t).maxKey he = t.maxKey
theorem Std.DTreeMap.Internal.Impl.maxKey_alter_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {he : (alter k f t ).impl.isEmpty = false} :
(alter k f t ).impl.maxKey he = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.maxKey_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} {he : (modify k f t).isEmpty = false} :
(modify k f t).maxKey he = if compare (t.maxKey ) k = Ordering.eq then k else t.maxKey
theorem Std.DTreeMap.Internal.Impl.Const.maxKey_modify_eq_maxKey {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : ββ} {he : (modify k f t).isEmpty = false} :
(modify k f t).maxKey he = t.maxKey
theorem Std.DTreeMap.Internal.Impl.Const.compare_maxKey_modify_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} {he : (modify k f t).isEmpty = false} :
compare ((modify k f t).maxKey he) (t.maxKey ) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.Const.maxKey_alter_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} {he : (alter k f t ).impl.isEmpty = false} :
(alter k f t ).impl.maxKey he = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey_eq_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {he : t.isEmpty = false} :
theorem Std.DTreeMap.Internal.Impl.maxKey?_eq_some_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_eq_default {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = true) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_eq_iff_getKey?_eq_self_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {km : α} :
t.maxKey! = km t.getKey? km = some km ∀ (k : α), k t(compare k km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey!_eq_iff_mem_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {km : α} :
t.maxKey! = km km t ∀ (k : α), k t(compare k km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey!_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(insert k v t ).impl.maxKey! = t.maxKey?.elim k fun (k' : α) => if (compare k' k).isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKey!_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(insert! k v t).maxKey! = t.maxKey?.elim k fun (k' : α) => if (compare k' k).isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKey!_le_maxKey!_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.maxKey!_le_maxKey!_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey!_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(compare k (insert k v t ).impl.maxKey!).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey!_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.contains_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.le_maxKey!_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (hc : contains k t = true) :
theorem Std.DTreeMap.Internal.Impl.le_maxKey!_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (hc : k t) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} :
(compare t.maxKey! k).isLE = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.getKey?_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.getKey_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {he : contains t.maxKey! t = true} :
theorem Std.DTreeMap.Internal.Impl.getKey_maxKey!_eq_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {hc : contains t.maxKey! t = true} :
t.getKey t.maxKey! hc = t.maxKey
theorem Std.DTreeMap.Internal.Impl.getKey!_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.getKeyD_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
t.getKeyD t.maxKey! fallback = t.maxKey!
theorem Std.DTreeMap.Internal.Impl.maxKey!_erase_eq_iff_not_compare_maxKey!_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_erase!_eq_iff_not_compare_maxKey!_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_erase_eq_of_not_compare_maxKey!_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) (heq : ¬compare k t.maxKey! = Ordering.eq) :
(erase k t ).impl.maxKey! = t.maxKey!
theorem Std.DTreeMap.Internal.Impl.maxKey!_erase!_eq_of_not_compare_maxKey!_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) (heq : ¬compare k t.maxKey! = Ordering.eq) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_erase_le_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_erase!_le_maxKey! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew k v t ).impl.maxKey! = t.maxKey?.elim k fun (k' : α) => if compare k' k = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKey!_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
(insertIfNew! k v t).maxKey! = t.maxKey?.elim k fun (k' : α) => if compare k' k = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKey!_le_maxKey!_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.maxKey!_le_maxKey!_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey!_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.self_le_maxKey!_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {v : β k} :
theorem Std.DTreeMap.Internal.Impl.maxKey!_eq_getLast!_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.maxKey!_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : β kβ k} :
theorem Std.DTreeMap.Internal.Impl.maxKey!_alter_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (he : (alter k f t ).impl.isEmpty = false) :
(alter k f t ).impl.maxKey! = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey!_alter!_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} (he : (alter! k f t).isEmpty = false) :
(alter! k f t).maxKey! = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.maxKey!_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : ββ} (he : (modify k f t).isEmpty = false) :
theorem Std.DTreeMap.Internal.Impl.Const.maxKey!_modify_eq_maxKey! {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] [Inhabited α] (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.compare_maxKey!_modify_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : ββ} :
theorem Std.DTreeMap.Internal.Impl.Const.maxKey!_alter_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option βOption β} (he : (alter k f t ).impl.isEmpty = false) :
(alter k f t ).impl.maxKey! = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.maxKey!_alter!_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [Inhabited α] (h : t.WF) {k : α} {f : Option βOption β} (he : (alter! k f t).isEmpty = false) :
(alter! k f t).maxKey! = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKey_eq_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {he : t.isEmpty = false} {fallback : α} :
t.maxKey he = t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.maxKey?_eq_some_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} (he : t.isEmpty = false) :
t.maxKey? = some (t.maxKeyD fallback)
theorem Std.DTreeMap.Internal.Impl.maxKeyD_eq_fallback {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} (he : t.isEmpty = true) :
t.maxKeyD fallback = fallback
theorem Std.DTreeMap.Internal.Impl.maxKey!_eq_maxKeyD_default {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) :
theorem Std.DTreeMap.Internal.Impl.maxKeyD_eq_iff_getKey?_eq_self_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {km fallback : α} :
t.maxKeyD fallback = km t.getKey? km = some km ∀ (k : α), k t(compare k km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_eq_iff_mem_and_forall {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) (he : t.isEmpty = false) {km fallback : α} :
t.maxKeyD fallback = km km t ∀ (k : α), k t(compare k km).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(insert k v t ).impl.maxKeyD fallback = t.maxKey?.elim k fun (k' : α) => if (compare k' k).isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKeyD_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(insert! k v t).maxKeyD fallback = t.maxKey?.elim k fun (k' : α) => if (compare k' k).isLE = true then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKeyD_le_maxKeyD_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} {fallback : α} :
(compare (t.maxKeyD fallback) ((insert k v t ).impl.maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_le_maxKeyD_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} {fallback : α} :
(compare (t.maxKeyD fallback) ((insert! k v t).maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKeyD_insert {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(compare k ((insert k v t ).impl.maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKeyD_insert! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(compare k ((insert! k v t).maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.contains_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
contains (t.maxKeyD fallback) t = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
t.maxKeyD fallback t
theorem Std.DTreeMap.Internal.Impl.le_maxKeyD_of_contains {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : contains k t = true) {fallback : α} :
(compare k (t.maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.le_maxKeyD_of_mem {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (hc : k t) {fallback : α} :
(compare k (t.maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_le {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k fallback : α} :
(compare (t.maxKeyD fallback) k).isLE = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.getKey?_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
t.getKey? (t.maxKeyD fallback) = some (t.maxKeyD fallback)
theorem Std.DTreeMap.Internal.Impl.getKey_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} {he : contains (t.maxKeyD fallback) t = true} :
t.getKey (t.maxKeyD fallback) he = t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.getKey_maxKeyD_eq_maxKey {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} {hc : contains (t.maxKeyD fallback) t = true} :
t.getKey (t.maxKeyD fallback) hc = t.maxKey
theorem Std.DTreeMap.Internal.Impl.getKey!_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [Inhabited α] (h : t.WF) (he : t.isEmpty = false) {fallback : α} :
t.getKey! (t.maxKeyD fallback) = t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.getKeyD_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {fallback fallback' : α} :
t.getKeyD (t.maxKeyD fallback) fallback' = t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.maxKeyD_erase_eq_iff_not_compare_maxKeyD_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} (he : (erase k t ).impl.isEmpty = false) :
(erase k t ).impl.maxKeyD fallback = t.maxKeyD fallback ¬compare k (t.maxKeyD fallback) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.maxKeyD_erase!_eq_iff_not_compare_maxKeyD_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} (he : (erase! k t).isEmpty = false) :
(erase! k t).maxKeyD fallback = t.maxKeyD fallback ¬compare k (t.maxKeyD fallback) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.maxKeyD_erase_eq_of_not_compare_maxKeyD_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} (he : (erase k t ).impl.isEmpty = false) (heq : ¬compare k (t.maxKeyD fallback) = Ordering.eq) :
(erase k t ).impl.maxKeyD fallback = t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.maxKeyD_erase!_eq_of_not_compare_maxKeyD_eq {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k fallback : α} (he : (erase! k t).isEmpty = false) (heq : ¬compare k (t.maxKeyD fallback) = Ordering.eq) :
(erase! k t).maxKeyD fallback = t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.maxKeyD_erase_le_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (he : (erase k t ).impl.isEmpty = false) {fallback : α} :
(compare ((erase k t ).impl.maxKeyD fallback) (t.maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_erase!_le_maxKeyD {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} (he : (erase! k t).isEmpty = false) {fallback : α} :
(compare ((erase! k t).maxKeyD fallback) (t.maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(insertIfNew k v t ).impl.maxKeyD fallback = t.maxKey?.elim k fun (k' : α) => if compare k' k = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKeyD_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(insertIfNew! k v t).maxKeyD fallback = t.maxKey?.elim k fun (k' : α) => if compare k' k = Ordering.lt then k else k'
theorem Std.DTreeMap.Internal.Impl.maxKeyD_le_maxKeyD_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} {fallback : α} :
(compare (t.maxKeyD fallback) ((insertIfNew k v t ).impl.maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_le_maxKeyD_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) (he : t.isEmpty = false) {k : α} {v : β k} {fallback : α} :
(compare (t.maxKeyD fallback) ((insertIfNew! k v t).maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKeyD_insertIfNew {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(compare k ((insertIfNew k v t ).impl.maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.self_le_maxKeyD_insertIfNew! {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {k : α} {v : β k} {fallback : α} :
(compare k ((insertIfNew! k v t).maxKeyD fallback)).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_eq_getLastD_keys {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] (h : t.WF) {fallback : α} :
t.maxKeyD fallback = t.keys.getLastD fallback
theorem Std.DTreeMap.Internal.Impl.maxKeyD_modify {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : β kβ k} {fallback : α} :
(modify k f t).maxKeyD fallback = t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.maxKeyD_alter_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {fallback : α} (he : (alter k f t ).impl.isEmpty = false) :
(alter k f t ).impl.maxKeyD fallback = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.maxKeyD_alter!_eq_self {α : Type u} {β : αType v} {instOrd : Ord α} {t : Impl α β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : Option (β k)Option (β k)} {fallback : α} (he : (alter! k f t).isEmpty = false) :
(alter! k f t).maxKeyD fallback = k (f (t.get? k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.maxKeyD_modify {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} (he : (modify k f t).isEmpty = false) {fallback : α} :
(modify k f t).maxKeyD fallback = if compare (t.maxKeyD fallback) k = Ordering.eq then k else t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.Const.maxKeyD_modify_eq_maxKeyD {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] [LawfulEqOrd α] (h : t.WF) {k : α} {f : ββ} {fallback : α} :
(modify k f t).maxKeyD fallback = t.maxKeyD fallback
theorem Std.DTreeMap.Internal.Impl.Const.compare_maxKeyD_modify_eq {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : ββ} {fallback : α} :
compare ((modify k f t).maxKeyD fallback) (t.maxKeyD fallback) = Ordering.eq
theorem Std.DTreeMap.Internal.Impl.Const.maxKeyD_alter_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (he : (alter k f t ).impl.isEmpty = false) {fallback : α} :
(alter k f t ).impl.maxKeyD fallback = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true
theorem Std.DTreeMap.Internal.Impl.Const.maxKeyD_alter!_eq_self {α : Type u} {instOrd : Ord α} {β : Type v} {t : Impl α fun (x : α) => β} [TransOrd α] (h : t.WF) {k : α} {f : Option βOption β} (he : (alter! k f t).isEmpty = false) {fallback : α} :
(alter! k f t).maxKeyD fallback = k (f (get? t k)).isSome = true ∀ (k' : α), k' t(compare k' k).isLE = true