Documentation

Std.Data.DHashMap.Internal.List.Associative

This is an internal implementation file of the hash map. Users of the hash map should not rely on the contents of this file.

File contents: Verification of associative lists

theorem Std.DHashMap.Internal.List.assoc_induction {α : Type u} {β : αType v} {motive : List ((a : α) × β a)Prop} (nil : motive []) (cons : ∀ (k : α) (v : β k) (tail : List ((a : α) × β a)), motive tailmotive (k, v :: tail)) (t : List ((a : α) × β a)) :
motive t
def Std.DHashMap.Internal.List.getEntry? {α : Type u} {β : αType v} [BEq α] (a : α) :
List ((a : α) × β a)Option ((a : α) × β a)

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getEntry?_nil {α : Type u} {β : αType v} [BEq α] {a : α} :
theorem Std.DHashMap.Internal.List.getEntry?_cons {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getEntry? a (k, v :: l) = bif k == a then some k, v else getEntry? a l
theorem Std.DHashMap.Internal.List.getEntry?_cons_of_true {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = true) :
getEntry? a (k, v :: l) = some k, v
theorem Std.DHashMap.Internal.List.getEntry?_cons_of_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = false) :
getEntry? a (k, v :: l) = getEntry? a l
@[simp]
theorem Std.DHashMap.Internal.List.getEntry?_cons_self {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
getEntry? k (k, v :: l) = some k, v
theorem Std.DHashMap.Internal.List.getEntry?_eq_some {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} {p : (a : α) × β a} (h : getEntry? a l = some p) :
(p.fst == a) = true
theorem Std.DHashMap.Internal.List.getEntry?_congr {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a b : α} (h : (a == b) = true) :
theorem Std.DHashMap.Internal.List.isEmpty_eq_false_iff_exists_isSome_getEntry? {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} :
theorem Std.DHashMap.Internal.List.isEmpty_iff_forall_isSome_getEntry? {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} :
l.isEmpty = true ∀ (a : α), (getEntry? a l).isSome = false
def Std.DHashMap.Internal.List.getValue? {α : Type u} {β : Type v} [BEq α] (a : α) :
List ((_ : α) × β)Option β

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getValue?_nil {α : Type u} {β : Type v} [BEq α] {a : α} :
theorem Std.DHashMap.Internal.List.getValue?_cons {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} :
getValue? a (k, v :: l) = bif k == a then some v else getValue? a l
theorem Std.DHashMap.Internal.List.getValue?_cons_of_true {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} (h : (k == a) = true) :
getValue? a (k, v :: l) = some v
theorem Std.DHashMap.Internal.List.getValue?_cons_of_false {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} (h : (k == a) = false) :
getValue? a (k, v :: l) = getValue? a l
@[simp]
theorem Std.DHashMap.Internal.List.getValue?_cons_self {α : Type u} {β : Type v} [BEq α] [ReflBEq α] {l : List ((_ : α) × β)} {k : α} {v : β} :
getValue? k (k, v :: l) = some v
theorem Std.DHashMap.Internal.List.getValue?_eq_getEntry? {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {a : α} :
getValue? a l = Option.map (fun (x : (_ : α) × β) => x.snd) (getEntry? a l)
theorem Std.DHashMap.Internal.List.getValue?_congr {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {a b : α} (h : (a == b) = true) :
def Std.DHashMap.Internal.List.getValueCast? {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (a : α) :
List ((a : α) × β a)Option (β a)

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getValueCast?_nil {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} :
theorem Std.DHashMap.Internal.List.getValueCast?_cons {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getValueCast? a (k, v :: l) = if h : (k == a) = true then some (cast v) else getValueCast? a l
theorem Std.DHashMap.Internal.List.getValueCast?_cons_of_true {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = true) :
getValueCast? a (k, v :: l) = some (cast v)
theorem Std.DHashMap.Internal.List.getValueCast?_cons_of_false {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = false) :
getValueCast? a (k, v :: l) = getValueCast? a l
@[simp]
theorem Std.DHashMap.Internal.List.getValueCast?_cons_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
getValueCast? k (k, v :: l) = some v
theorem Std.DHashMap.Internal.List.getValue?_eq_getValueCast? {α : Type u} [BEq α] [LawfulBEq α] {β : Type v} {l : List ((_ : α) × β)} {a : α} :
theorem Std.DHashMap.Internal.List.getValueCast?_eq_getEntry? {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} :
getValueCast? a l = Std.DHashMap.Internal.List.Option.dmap✝ (getEntry? a l) fun (p : (a : α) × β a) (h : getEntry? a l = some p) => cast p.snd
theorem Std.DHashMap.Internal.List.isSome_getValueCast?_eq_isSome_getEntry? {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} :
def Std.DHashMap.Internal.List.containsKey {α : Type u} {β : αType v} [BEq α] (a : α) :
List ((a : α) × β a)Bool

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.containsKey_nil {α : Type u} {β : αType v} [BEq α] {a : α} :
@[simp]
theorem Std.DHashMap.Internal.List.containsKey_cons {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
containsKey a (k, v :: l) = (k == a || containsKey a l)
theorem Std.DHashMap.Internal.List.containsKey_cons_eq_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
containsKey a (k, v :: l) = false (k == a) = false containsKey a l = false
theorem Std.DHashMap.Internal.List.containsKey_cons_eq_true {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
containsKey a (k, v :: l) = true (k == a) = true containsKey a l = true
theorem Std.DHashMap.Internal.List.containsKey_cons_of_beq {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = true) :
containsKey a (k, v :: l) = true
@[simp]
theorem Std.DHashMap.Internal.List.containsKey_cons_self {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
containsKey k (k, v :: l) = true
theorem Std.DHashMap.Internal.List.containsKey_cons_of_containsKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : containsKey a l = true) :
containsKey a (k, v :: l) = true
theorem Std.DHashMap.Internal.List.containsKey_of_containsKey_cons {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h₁ : containsKey a (k, v :: l) = true) (h₂ : (k == a) = false) :
theorem Std.DHashMap.Internal.List.containsKey_eq_isSome_getEntry? {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} :
theorem Std.DHashMap.Internal.List.containsKey_eq_contains_map_fst {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} :
theorem Std.DHashMap.Internal.List.isEmpty_eq_false_of_containsKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = true) :
theorem Std.DHashMap.Internal.List.isEmpty_eq_false_iff_exists_containsKey {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} :
theorem Std.DHashMap.Internal.List.isEmpty_iff_forall_containsKey {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} :
l.isEmpty = true ∀ (a : α), containsKey a l = false
@[simp]
theorem Std.DHashMap.Internal.List.getEntry?_eq_none {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} :
@[simp]
theorem Std.DHashMap.Internal.List.getValue?_eq_none {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {a : α} :
theorem Std.DHashMap.Internal.List.containsKey_eq_isSome_getValue? {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {a : α} :
theorem Std.DHashMap.Internal.List.containsKey_eq_isSome_getValueCast? {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} :
theorem Std.DHashMap.Internal.List.getValueCast?_eq_none {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = false) :
theorem Std.DHashMap.Internal.List.containsKey_congr {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a b : α} (h : (a == b) = true) :
theorem Std.DHashMap.Internal.List.containsKey_of_beq {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a b : α} (hla : containsKey a l = true) (hab : (a == b) = true) :
def Std.DHashMap.Internal.List.getEntry {α : Type u} {β : αType v} [BEq α] (a : α) (l : List ((a : α) × β a)) (h : containsKey a l = true) :
(a : α) × β a

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.getEntry?_eq_some_getEntry {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = true) :
getEntry? a l = some (getEntry a l h)
theorem Std.DHashMap.Internal.List.getEntry_eq_of_getEntry?_eq_some {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : getEntry? a l = some k, v) {h' : containsKey a l = true} :
getEntry a l h' = k, v
theorem Std.DHashMap.Internal.List.getEntry_cons_of_beq {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = true) :
getEntry a (k, v :: l) = k, v
@[simp]
theorem Std.DHashMap.Internal.List.getEntry_cons_self {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
getEntry k (k, v :: l) = k, v
theorem Std.DHashMap.Internal.List.getEntry_cons_of_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} {h₁ : containsKey a (k, v :: l) = true} (h₂ : (k == a) = false) :
getEntry a (k, v :: l) h₁ = getEntry a l
def Std.DHashMap.Internal.List.getValue {α : Type u} {β : Type v} [BEq α] (a : α) (l : List ((_ : α) × β)) (h : containsKey a l = true) :
β

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.getValue?_eq_some_getValue {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {a : α} (h : containsKey a l = true) :
getValue? a l = some (getValue a l h)
theorem Std.DHashMap.Internal.List.getValue_cons_of_beq {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} (h : (k == a) = true) :
getValue a (k, v :: l) = v
@[simp]
theorem Std.DHashMap.Internal.List.getValue_cons_self {α : Type u} {β : Type v} [BEq α] [ReflBEq α] {l : List ((_ : α) × β)} {k : α} {v : β} :
getValue k (k, v :: l) = v
theorem Std.DHashMap.Internal.List.getValue_cons_of_false {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} {h₁ : containsKey a (k, v :: l) = true} (h₂ : (k == a) = false) :
getValue a (k, v :: l) h₁ = getValue a l
theorem Std.DHashMap.Internal.List.getValue_cons {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} {h : containsKey a (k, v :: l) = true} :
getValue a (k, v :: l) h = if h' : (k == a) = true then v else getValue a l
theorem Std.DHashMap.Internal.List.getValue_congr {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {a b : α} (hab : (a == b) = true) {h : containsKey a l = true} :
getValue a l h = getValue b l
def Std.DHashMap.Internal.List.getValueCast {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (a : α) (l : List ((a : α) × β a)) (h : containsKey a l = true) :
β a

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.getValueCast?_eq_some_getValueCast {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = true) :
theorem Std.DHashMap.Internal.List.Option.get_congr {α : Type u} {o o' : Option α} {ho : o.isSome = true} (h : o = o') :
o.get ho = o'.get
theorem Std.DHashMap.Internal.List.getValueCast_cons {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : containsKey a (k, v :: l) = true) :
getValueCast a (k, v :: l) h = if h' : (k == a) = true then cast v else getValueCast a l
theorem Std.DHashMap.Internal.List.getValue_eq_getValueCast {α : Type u} {β : Type v} [BEq α] [LawfulBEq α] {l : List ((_ : α) × β)} {a : α} {h : containsKey a l = true} :
getValue a l h = getValueCast a l h
def Std.DHashMap.Internal.List.getValueCastD {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (a : α) (l : List ((a : α) × β a)) (fallback : β a) :
β a

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getValueCastD_nil {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {fallback : β a} :
getValueCastD a [] fallback = fallback
theorem Std.DHashMap.Internal.List.getValueCastD_eq_getValueCast? {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} {fallback : β a} :
getValueCastD a l fallback = (getValueCast? a l).getD fallback
theorem Std.DHashMap.Internal.List.getValueCastD_eq_fallback {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} {fallback : β a} (h : containsKey a l = false) :
getValueCastD a l fallback = fallback
theorem Std.DHashMap.Internal.List.getValueCast_eq_getValueCastD {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} {fallback : β a} (h : containsKey a l = true) :
getValueCast a l h = getValueCastD a l fallback
theorem Std.DHashMap.Internal.List.getValueCast?_eq_some_getValueCastD {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} {fallback : β a} (h : containsKey a l = true) :
getValueCast? a l = some (getValueCastD a l fallback)
def Std.DHashMap.Internal.List.getValueCast! {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (a : α) [Inhabited (β a)] (l : List ((a : α) × β a)) :
β a

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getValueCast!_nil {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} [Inhabited (β a)] :
theorem Std.DHashMap.Internal.List.getValueCast!_eq_getValueCast? {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} [Inhabited (β a)] :
theorem Std.DHashMap.Internal.List.getValueCast!_eq_default {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} [Inhabited (β a)] (h : containsKey a l = false) :
theorem Std.DHashMap.Internal.List.getValueCast_eq_getValueCast! {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} [Inhabited (β a)] (h : containsKey a l = true) :
theorem Std.DHashMap.Internal.List.getValueCast?_eq_some_getValueCast! {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} [Inhabited (β a)] (h : containsKey a l = true) :
theorem Std.DHashMap.Internal.List.getValueCast!_eq_getValueCastD_default {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a : α} [Inhabited (β a)] :
def Std.DHashMap.Internal.List.getValueD {α : Type u} {β : Type v} [BEq α] (a : α) (l : List ((_ : α) × β)) (fallback : β) :
β

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getValueD_nil {α : Type u} {β : Type v} [BEq α] {a : α} {fallback : β} :
getValueD a [] fallback = fallback
theorem Std.DHashMap.Internal.List.getValueD_eq_getValue? {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {a : α} {fallback : β} :
getValueD a l fallback = (getValue? a l).getD fallback
theorem Std.DHashMap.Internal.List.getValueD_eq_fallback {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {a : α} {fallback : β} (h : containsKey a l = false) :
getValueD a l fallback = fallback
theorem Std.DHashMap.Internal.List.getValue_eq_getValueD {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {a : α} {fallback : β} (h : containsKey a l = true) :
getValue a l h = getValueD a l fallback
theorem Std.DHashMap.Internal.List.getValue?_eq_some_getValueD {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {a : α} {fallback : β} (h : containsKey a l = true) :
getValue? a l = some (getValueD a l fallback)
theorem Std.DHashMap.Internal.List.getValueD_eq_getValueCastD {α : Type u} {β : Type v} [BEq α] [LawfulBEq α] {l : List ((_ : α) × β)} {a : α} {fallback : β} :
getValueD a l fallback = getValueCastD a l fallback
theorem Std.DHashMap.Internal.List.getValueD_congr {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {a b : α} {fallback : β} (hab : (a == b) = true) :
getValueD a l fallback = getValueD b l fallback
def Std.DHashMap.Internal.List.getValue! {α : Type u} {β : Type v} [BEq α] [Inhabited β] (a : α) (l : List ((_ : α) × β)) :
β

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getValue!_nil {α : Type u} {β : Type v} [BEq α] [Inhabited β] {a : α} :
theorem Std.DHashMap.Internal.List.getValue!_eq_getValue? {α : Type u} {β : Type v} [BEq α] [Inhabited β] {l : List ((_ : α) × β)} {a : α} :
theorem Std.DHashMap.Internal.List.getValue!_eq_default {α : Type u} {β : Type v} [BEq α] [Inhabited β] {l : List ((_ : α) × β)} {a : α} (h : containsKey a l = false) :
theorem Std.DHashMap.Internal.List.getValue_eq_getValue! {α : Type u} {β : Type v} [BEq α] [Inhabited β] {l : List ((_ : α) × β)} {a : α} (h : containsKey a l = true) :
getValue a l h = getValue! a l
theorem Std.DHashMap.Internal.List.getValue?_eq_some_getValue! {α : Type u} {β : Type v} [BEq α] [Inhabited β] {l : List ((_ : α) × β)} {a : α} (h : containsKey a l = true) :
theorem Std.DHashMap.Internal.List.getValue!_eq_getValueCast! {α : Type u} {β : Type v} [BEq α] [LawfulBEq α] [Inhabited β] {l : List ((_ : α) × β)} {a : α} :
theorem Std.DHashMap.Internal.List.getValue!_congr {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] [Inhabited β] {l : List ((_ : α) × β)} {a b : α} (hab : (a == b) = true) :
theorem Std.DHashMap.Internal.List.getValue!_eq_getValueD_default {α : Type u} {β : Type v} [BEq α] [Inhabited β] {l : List ((_ : α) × β)} {a : α} :
def Std.DHashMap.Internal.List.getKey? {α : Type u} {β : αType v} [BEq α] (a : α) :
List ((a : α) × β a)Option α

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getKey?_nil {α : Type u} {β : αType v} [BEq α] {a : α} :
@[simp]
theorem Std.DHashMap.Internal.List.getKey?_cons {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getKey? a (k, v :: l) = bif k == a then some k else getKey? a l
theorem Std.DHashMap.Internal.List.getKey?_cons_of_true {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = true) :
getKey? a (k, v :: l) = some k
theorem Std.DHashMap.Internal.List.getKey?_cons_of_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = false) :
getKey? a (k, v :: l) = getKey? a l
theorem Std.DHashMap.Internal.List.getKey?_eq_getEntry? {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} :
getKey? a l = Option.map (fun (x : (a : α) × β a) => x.fst) (getEntry? a l)
theorem Std.DHashMap.Internal.List.containsKey_eq_isSome_getKey? {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} :
def Std.DHashMap.Internal.List.getKey {α : Type u} {β : αType v} [BEq α] (a : α) (l : List ((a : α) × β a)) (h : containsKey a l = true) :
α

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.getKey?_eq_some_getKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = true) :
getKey? a l = some (getKey a l h)
theorem Std.DHashMap.Internal.List.getKey_cons {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} {h : containsKey a (k, v :: l) = true} :
getKey a (k, v :: l) h = if h' : (k == a) = true then k else getKey a l
def Std.DHashMap.Internal.List.getKeyD {α : Type u} {β : αType v} [BEq α] (a : α) (l : List ((a : α) × β a)) (fallback : α) :
α

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getKeyD_nil {α : Type u} {β : αType v} [BEq α] {a fallback : α} :
getKeyD a [] fallback = fallback
theorem Std.DHashMap.Internal.List.getKeyD_eq_getKey? {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a fallback : α} :
getKeyD a l fallback = (getKey? a l).getD fallback
theorem Std.DHashMap.Internal.List.getKeyD_eq_fallback {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {a fallback : α} (h : containsKey a l = false) :
getKeyD a l fallback = fallback
theorem Std.DHashMap.Internal.List.getKey_eq_getKeyD {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {a fallback : α} (h : containsKey a l = true) :
getKey a l h = getKeyD a l fallback
theorem Std.DHashMap.Internal.List.getKey?_eq_some_getKeyD {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {a fallback : α} (h : containsKey a l = true) :
getKey? a l = some (getKeyD a l fallback)
def Std.DHashMap.Internal.List.getKey! {α : Type u} {β : αType v} [BEq α] [Inhabited α] (a : α) (l : List ((a : α) × β a)) :
α

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.getKey!_nil {α : Type u} {β : αType v} [BEq α] [Inhabited α] {a : α} :
theorem Std.DHashMap.Internal.List.getKey!_eq_getKey? {α : Type u} {β : αType v} [BEq α] [Inhabited α] {l : List ((a : α) × β a)} {a : α} :
getKey! a l = (getKey? a l).get!
theorem Std.DHashMap.Internal.List.getKey!_eq_default {α : Type u} {β : αType v} [BEq α] [Inhabited α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = false) :
theorem Std.DHashMap.Internal.List.getKey_eq_getKey! {α : Type u} {β : αType v} [BEq α] [Inhabited α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = true) :
getKey a l h = getKey! a l
theorem Std.DHashMap.Internal.List.getKey?_eq_some_getKey! {α : Type u} {β : αType v} [BEq α] [Inhabited α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = true) :
getKey? a l = some (getKey! a l)
theorem Std.DHashMap.Internal.List.getKey!_eq_getKeyD_default {α : Type u} {β : αType v} [BEq α] [EquivBEq α] [Inhabited α] {l : List ((a : α) × β a)} {a : α} :
def Std.DHashMap.Internal.List.replaceEntry {α : Type u} {β : αType v} [BEq α] (k : α) (v : β k) :
List ((a : α) × β a)List ((a : α) × β a)

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.replaceEntry_nil {α : Type u} {β : αType v} [BEq α] {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.replaceEntry_cons {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k k' : α} {v : β k} {v' : β k'} :
replaceEntry k v (k', v' :: l) = bif k' == k then k, v :: l else k', v' :: replaceEntry k v l
theorem Std.DHashMap.Internal.List.replaceEntry_cons_of_true {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k k' : α} {v : β k} {v' : β k'} (h : (k' == k) = true) :
replaceEntry k v (k', v' :: l) = k, v :: l
theorem Std.DHashMap.Internal.List.replaceEntry_cons_of_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k k' : α} {v : β k} {v' : β k'} (h : (k' == k) = false) :
replaceEntry k v (k', v' :: l) = k', v' :: replaceEntry k v l
theorem Std.DHashMap.Internal.List.replaceEntry_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l = false) :
replaceEntry k v l = l
@[simp]
theorem Std.DHashMap.Internal.List.isEmpty_replaceEntry {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.mem_replaceEntry_of_beq_eq_false {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {a : α} {b : β a} {l : List ((a : α) × β a)} (p : (a : α) × β a) (hne : (p.fst == a) = false) :
p replaceEntry a b l p l
theorem Std.DHashMap.Internal.List.mem_replaceEntry_of_key_ne {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {b : β a} {l : List ((a : α) × β a)} (p : (a : α) × β a) (hne : p.fst a) :
p replaceEntry a b l p l
theorem Std.DHashMap.Internal.List.getEntry?_replaceEntry_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a k : α} {v : β k} (hl : containsKey k l = false) :
theorem Std.DHashMap.Internal.List.getEntry?_replaceEntry_of_false {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a k : α} {v : β k} (h : (k == a) = false) :
theorem Std.DHashMap.Internal.List.getEntry?_replaceEntry_of_true {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a k : α} {v : β k} (hl : containsKey k l = true) (h : (k == a) = true) :
getEntry? a (replaceEntry k v l) = some k, v
theorem Std.DHashMap.Internal.List.getEntry?_replaceEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a k : α} {v : β k} :
getEntry? a (replaceEntry k v l) = if containsKey k l = true (k == a) = true then some k, v else getEntry? a l
@[simp]
theorem Std.DHashMap.Internal.List.length_replaceEntry {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.getValue?_replaceEntry_of_containsKey_eq_false {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} (hl : containsKey k l = false) :
theorem Std.DHashMap.Internal.List.getValue?_replaceEntry_of_false {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} (h : (k == a) = false) :
theorem Std.DHashMap.Internal.List.getValue?_replaceEntry_of_true {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} (hl : containsKey k l = true) (h : (k == a) = true) :
theorem Std.DHashMap.Internal.List.getValueCast?_replaceEntry {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {a k : α} {v : β k} :
getValueCast? a (replaceEntry k v l) = if h : containsKey k l = true (k == a) = true then some (cast v) else getValueCast? a l
theorem Std.DHashMap.Internal.List.getKey?_replaceEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a k : α} {v : β k} :
@[simp]
theorem Std.DHashMap.Internal.List.containsKey_replaceEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a k : α} {v : β k} :
def Std.DHashMap.Internal.List.eraseKey {α : Type u} {β : αType v} [BEq α] (k : α) :
List ((a : α) × β a)List ((a : α) × β a)

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.eraseKey_nil {α : Type u} {β : αType v} [BEq α] {k : α} :
theorem Std.DHashMap.Internal.List.eraseKey_cons {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k k' : α} {v' : β k'} :
eraseKey k (k', v' :: l) = bif k' == k then l else k', v' :: eraseKey k l
theorem Std.DHashMap.Internal.List.eraseKey_cons_of_beq {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k k' : α} {v' : β k'} (h : (k' == k) = true) :
eraseKey k (k', v' :: l) = l
@[simp]
theorem Std.DHashMap.Internal.List.eraseKey_cons_self {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
eraseKey k (k, v :: l) = l
theorem Std.DHashMap.Internal.List.eraseKey_cons_of_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k k' : α} {v' : β k'} (h : (k' == k) = false) :
eraseKey k (k', v' :: l) = k', v' :: eraseKey k l
theorem Std.DHashMap.Internal.List.eraseKey_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} (h : containsKey k l = false) :
eraseKey k l = l
theorem Std.DHashMap.Internal.List.mem_eraseKey_of_key_beq_eq_false {α : Type u} {β : αType v} [BEq α] {a : α} {l : List ((a : α) × β a)} (p : (a : α) × β a) (hne : (p.fst == a) = false) :
p eraseKey a l p l
theorem Std.DHashMap.Internal.List.mem_eraseKey_of_key_ne {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {l : List ((a : α) × β a)} (p : (a : α) × β a) (hne : p.fst a) :
p eraseKey a l p l
theorem Std.DHashMap.Internal.List.sublist_eraseKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} :
theorem Std.DHashMap.Internal.List.length_eraseKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} :
theorem Std.DHashMap.Internal.List.length_eraseKey_le {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} :
theorem Std.DHashMap.Internal.List.length_le_length_eraseKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} :
theorem Std.DHashMap.Internal.List.isEmpty_eraseKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} :
@[simp]
theorem Std.DHashMap.Internal.List.keys_nil {α : Type u} {β : αType v} :
@[simp]
theorem Std.DHashMap.Internal.List.keys_cons {α : Type u} {β : αType v} {l : List ((a : α) × β a)} {k : α} {v : β k} :
keys (k, v :: l) = k :: keys l
theorem Std.DHashMap.Internal.List.keys_eq_map {α : Type u} {β : αType v} (l : List ((a : α) × β a)) :
keys l = List.map (fun (x : (a : α) × β a) => x.fst) l
theorem Std.DHashMap.Internal.List.length_keys_eq_length {α : Type u} {β : αType v} (l : List ((a : α) × β a)) :
theorem Std.DHashMap.Internal.List.isEmpty_keys_eq_isEmpty {α : Type u} {β : αType v} (l : List ((a : α) × β a)) :
theorem Std.DHashMap.Internal.List.containsKey_eq_keys_contains {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a : α} :
theorem Std.DHashMap.Internal.List.containsKey_eq_true_iff_exists_mem {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} :
containsKey a l = true (p : (a : α) × β a), p l (p.fst == a) = true
theorem Std.DHashMap.Internal.List.containsKey_of_mem {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} {p : (a : α) × β a} (hp : p l) :
@[simp]
theorem Std.DHashMap.Internal.List.DistinctKeys.def {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} :
DistinctKeys l List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) l
theorem Std.DHashMap.Internal.List.DistinctKeys.perm_keys {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} (h : (keys l').Perm (keys l)) :
theorem Std.DHashMap.Internal.List.DistinctKeys.perm {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} (h : l'.Perm l) :
theorem Std.DHashMap.Internal.List.DistinctKeys.congr {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} (h : l.Perm l') :
theorem Std.DHashMap.Internal.List.distinctKeys_of_sublist_keys {α : Type u} {β : αType v} {γ : αType w} [BEq α] {l : List ((a : α) × β a)} {l' : List ((a : α) × γ a)} (h : (keys l').Sublist (keys l)) :
theorem Std.DHashMap.Internal.List.distinctKeys_of_sublist {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} (h : l'.Sublist l) :
theorem Std.DHashMap.Internal.List.DistinctKeys.of_keys_eq {α : Type u} {β : αType v} {γ : αType w} [BEq α] {l : List ((a : α) × β a)} {l' : List ((a : α) × γ a)} (h : keys l = keys l') :
theorem Std.DHashMap.Internal.List.containsKey_iff_exists {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a : α} :
containsKey a l = true (a' : α), a' keys l (a == a') = true
theorem Std.DHashMap.Internal.List.containsKey_eq_false_iff_forall_mem_keys {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a : α} :
containsKey a l = false ∀ (a' : α), a' keys l → (a == a') = false
theorem Std.DHashMap.Internal.List.containsKey_eq_false_iff {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a : α} :
containsKey a l = false ∀ (b : (a : α) × β a), b l → (a == b.fst) = false
@[simp]
theorem Std.DHashMap.Internal.List.distinctKeys_cons_iff {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.DistinctKeys.tail {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
DistinctKeys (k, v :: l)DistinctKeys l
theorem Std.DHashMap.Internal.List.DistinctKeys.containsKey_eq_false {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
DistinctKeys (k, v :: l)containsKey k l = false
theorem Std.DHashMap.Internal.List.DistinctKeys.cons {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l = false) :
DistinctKeys lDistinctKeys (k, v :: l)
theorem Std.DHashMap.Internal.List.mem_iff_getEntry?_eq_some {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {p : (a : α) × β a} (h : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.DistinctKeys.replaceEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} (h : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getEntry?_of_mem {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} (hl : DistinctKeys l) {k k' : α} (hk : (k == k') = true) {v : β k} (hkv : k, v l) :
getEntry? k' l = some k, v
def Std.DHashMap.Internal.List.insertEntry {α : Type u} {β : αType v} [BEq α] (k : α) (v : β k) (l : List ((a : α) × β a)) :
List ((a : α) × β a)

Internal implementation detail of the hash map

Equations
@[simp]
theorem Std.DHashMap.Internal.List.insertEntry_nil {α : Type u} {β : αType v} [BEq α] {k : α} {v : β k} :
insertEntry k v [] = [k, v]
theorem Std.DHashMap.Internal.List.insertEntry_cons_of_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k k' : α} {v : β k} {v' : β k'} (h : (k' == k) = false) :
(insertEntry k v (k', v' :: l)).Perm (k', v' :: insertEntry k v l)
theorem Std.DHashMap.Internal.List.insertEntry_cons_of_beq {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k k' : α} {v : β k} {v' : β k'} (h : (k' == k) = true) :
insertEntry k v (k', v' :: l) = k, v :: l
@[simp]
theorem Std.DHashMap.Internal.List.insertEntry_cons_self {α : Type u} {β : αType v} [BEq α] [ReflBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
insertEntry k v (k, v :: l) = k, v :: l
theorem Std.DHashMap.Internal.List.insertEntry_of_containsKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l = true) :
theorem Std.DHashMap.Internal.List.insertEntry_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l = false) :
insertEntry k v l = k, v :: l
theorem Std.DHashMap.Internal.List.mem_insertEntry_of_key_beq_eq_false {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {a : α} {b : β a} {l : List ((a : α) × β a)} (p : (a : α) × β a) (hne : (p.fst == a) = false) :
p insertEntry a b l p l
theorem Std.DHashMap.Internal.List.mem_insertEntry_of_key_ne {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {b : β a} {l : List ((a : α) × β a)} (p : (a : α) × β a) (hne : p.fst a) :
p insertEntry a b l p l
theorem Std.DHashMap.Internal.List.DistinctKeys.insertEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} (h : DistinctKeys l) :
@[simp]
theorem Std.DHashMap.Internal.List.isEmpty_insertEntry {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.length_insertEntry {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.length_le_length_insertEntry {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.length_insertEntry_le {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.getValue?_insertEntry_of_beq {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} (h : (k == a) = true) :
theorem Std.DHashMap.Internal.List.getValue?_insertEntry_of_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {k : α} {v : β} :
theorem Std.DHashMap.Internal.List.getValue?_insertEntry_of_false {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} (h : (k == a) = false) :
theorem Std.DHashMap.Internal.List.getValue?_insertEntry {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} :
theorem Std.DHashMap.Internal.List.getValue?_insertEntry_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {k : α} {v : β} :
theorem Std.DHashMap.Internal.List.getEntry?_insertEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getEntry? a (insertEntry k v l) = if (k == a) = true then some k, v else getEntry? a l
theorem Std.DHashMap.Internal.List.getValueCast?_insertEntry {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getValueCast? a (insertEntry k v l) = if h : (k == a) = true then some (cast v) else getValueCast? a l
theorem Std.DHashMap.Internal.List.getValueCast?_insertEntry_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.getValueCast!_insertEntry {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} [Inhabited (β a)] {v : β k} :
getValueCast! a (insertEntry k v l) = if h : (k == a) = true then cast v else getValueCast! a l
theorem Std.DHashMap.Internal.List.getValueCast!_insertEntry_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k : α} [Inhabited (β k)] {v : β k} :
theorem Std.DHashMap.Internal.List.getValueCastD_insertEntry {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {fallback : β a} {v : β k} :
getValueCastD a (insertEntry k v l) fallback = if h : (k == a) = true then cast v else getValueCastD a l fallback
theorem Std.DHashMap.Internal.List.getValueCastD_insertEntry_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k : α} {fallback v : β k} :
getValueCastD k (insertEntry k v l) fallback = v
theorem Std.DHashMap.Internal.List.getValue!_insertEntry {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] [Inhabited β] {l : List ((_ : α) × β)} {k a : α} {v : β} :
theorem Std.DHashMap.Internal.List.getValue!_insertEntry_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited β] {l : List ((_ : α) × β)} {k : α} {v : β} :
getValue! k (insertEntry k v l) = v
theorem Std.DHashMap.Internal.List.getValueD_insertEntry {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {fallback v : β} :
getValueD a (insertEntry k v l) fallback = if (k == a) = true then v else getValueD a l fallback
theorem Std.DHashMap.Internal.List.getValueD_insertEntry_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {k : α} {fallback v : β} :
getValueD k (insertEntry k v l) fallback = v
theorem Std.DHashMap.Internal.List.getKey?_insertEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getKey? a (insertEntry k v l) = if (k == a) = true then some k else getKey? a l
theorem Std.DHashMap.Internal.List.getKey?_insertEntry_self {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.getKey?_eq_none {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = false) :
theorem Std.DHashMap.Internal.List.getKey!_insertEntry {α : Type u} {β : αType v} [BEq α] [EquivBEq α] [Inhabited α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getKey! a (insertEntry k v l) = if (k == a) = true then k else getKey! a l
theorem Std.DHashMap.Internal.List.getKey!_insertEntry_self {α : Type u} {β : αType v} [BEq α] [EquivBEq α] [Inhabited α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
getKey! k (insertEntry k v l) = k
theorem Std.DHashMap.Internal.List.getKeyD_insertEntry {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {k a fallback : α} {v : β k} :
getKeyD a (insertEntry k v l) fallback = if (k == a) = true then k else getKeyD a l fallback
theorem Std.DHashMap.Internal.List.getKeyD_insertEntry_self {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {k fallback : α} {v : β k} :
getKeyD k (insertEntry k v l) fallback = k
theorem Std.DHashMap.Internal.List.containsKey_insertEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
theorem Std.DHashMap.Internal.List.containsKey_insertEntry_of_beq {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h : (k == a) = true) :
theorem Std.DHashMap.Internal.List.containsKey_insertEntry_self {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.containsKey_of_containsKey_insertEntry {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h₁ : containsKey a (insertEntry k v l) = true) (h₂ : (k == a) = false) :
theorem Std.DHashMap.Internal.List.getValueCast_insertEntry {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} {h : containsKey a (insertEntry k v l) = true} :
getValueCast a (insertEntry k v l) h = if h' : (k == a) = true then cast v else getValueCast a l
theorem Std.DHashMap.Internal.List.getValueCast_insertEntry_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
getValueCast k (insertEntry k v l) = v
theorem Std.DHashMap.Internal.List.getValue_insertEntry {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} {h : containsKey a (insertEntry k v l) = true} :
getValue a (insertEntry k v l) h = if h' : (k == a) = true then v else getValue a l
theorem Std.DHashMap.Internal.List.getValue_insertEntry_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {k : α} {v : β} :
getValue k (insertEntry k v l) = v
theorem Std.DHashMap.Internal.List.getKey_insertEntry {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} {h : containsKey a (insertEntry k v l) = true} :
getKey a (insertEntry k v l) h = if h' : (k == a) = true then k else getKey a l
theorem Std.DHashMap.Internal.List.getKey_insertEntry_self {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
getKey k (insertEntry k v l) = k
def Std.DHashMap.Internal.List.insertEntryIfNew {α : Type u} {β : αType v} [BEq α] (k : α) (v : β k) (l : List ((a : α) × β a)) :
List ((a : α) × β a)

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.insertEntryIfNew_of_containsKey {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l = true) :
theorem Std.DHashMap.Internal.List.insertEntryIfNew_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l = false) :
insertEntryIfNew k v l = k, v :: l
theorem Std.DHashMap.Internal.List.DistinctKeys.insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {k : α} {v : β k} {l : List ((a : α) × β a)} (h : DistinctKeys l) :
@[simp]
theorem Std.DHashMap.Internal.List.isEmpty_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.getEntry?_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getEntry? a (insertEntryIfNew k v l) = if (k == a && !containsKey k l) = true then some k, v else getEntry? a l
theorem Std.DHashMap.Internal.List.getValueCast?_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
getValueCast? a (insertEntryIfNew k v l) = if h : (k == a) = true containsKey k l = false then some (cast v) else getValueCast? a l
theorem Std.DHashMap.Internal.List.getValue?_insertEntryIfNew {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} :
theorem Std.DHashMap.Internal.List.containsKey_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
theorem Std.DHashMap.Internal.List.containsKey_insertEntryIfNew_self {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.containsKey_of_containsKey_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h₁ : containsKey a (insertEntryIfNew k v l) = true) (h₂ : (k == a) = false) :
theorem Std.DHashMap.Internal.List.containsKey_of_containsKey_insertEntryIfNew' {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} (h₁ : containsKey a (insertEntryIfNew k v l) = true) (h₂ : ¬((k == a) = true containsKey k l = false)) :

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

theorem Std.DHashMap.Internal.List.getValueCast_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} {h : containsKey a (insertEntryIfNew k v l) = true} :
getValueCast a (insertEntryIfNew k v l) h = if h' : (k == a) = true containsKey k l = false then cast v else getValueCast a l
theorem Std.DHashMap.Internal.List.getValue_insertEntryIfNew {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {v : β} {h : containsKey a (insertEntryIfNew k v l) = true} :
getValue a (insertEntryIfNew k v l) h = if h' : (k == a) = true containsKey k l = false then v else getValue a l
theorem Std.DHashMap.Internal.List.getValueCast!_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} [Inhabited (β a)] :
getValueCast! a (insertEntryIfNew k v l) = if h : (k == a) = true containsKey k l = false then cast v else getValueCast! a l
theorem Std.DHashMap.Internal.List.getValue!_insertEntryIfNew {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] [Inhabited β] {l : List ((_ : α) × β)} {k a : α} {v : β} :
theorem Std.DHashMap.Internal.List.getValueCastD_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} {fallback : β a} :
getValueCastD a (insertEntryIfNew k v l) fallback = if h : (k == a) = true containsKey k l = false then cast v else getValueCastD a l fallback
theorem Std.DHashMap.Internal.List.getValueD_insertEntryIfNew {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {fallback v : β} :
getValueD a (insertEntryIfNew k v l) fallback = if (k == a) = true containsKey k l = false then v else getValueD a l fallback
theorem Std.DHashMap.Internal.List.getKey?_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
theorem Std.DHashMap.Internal.List.getKey_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} {v : β k} {h : containsKey a (insertEntryIfNew k v l) = true} :
getKey a (insertEntryIfNew k v l) h = if h' : (k == a) = true containsKey k l = false then k else getKey a l
theorem Std.DHashMap.Internal.List.getKey!_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] [Inhabited α] {l : List ((a : α) × β a)} {k a : α} {v : β k} :
theorem Std.DHashMap.Internal.List.getKeyD_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a fallback : α} {v : β k} :
getKeyD a (insertEntryIfNew k v l) fallback = if (k == a) = true containsKey k l = false then k else getKeyD a l fallback
theorem Std.DHashMap.Internal.List.length_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.length_le_length_insertEntryIfNew {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
theorem Std.DHashMap.Internal.List.length_insertEntryIfNew_le {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {k : α} {v : β k} :
@[simp]
theorem Std.DHashMap.Internal.List.keys_eraseKey {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} :
keys (eraseKey k l) = (keys l).erase k
theorem Std.DHashMap.Internal.List.DistinctKeys.eraseKey {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} :
theorem Std.DHashMap.Internal.List.getEntry?_eraseKey_self {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} (h : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getEntry?_eraseKey_of_beq {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} (hl : DistinctKeys l) (hka : (k == a) = true) :
theorem Std.DHashMap.Internal.List.getEntry?_eraseKey_of_false {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} (hka : (k == a) = false) :
theorem Std.DHashMap.Internal.List.getEntry?_eraseKey {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.keys_filterMap {α : Type u} {β : αType v} {γ : αType w} [BEq α] {l : List ((a : α) × β a)} {f : (a : α) → β aOption (γ a)} :
keys (List.filterMap (fun (p : (a : α) × β a) => Option.map (fun (x : γ p.fst) => p.fst, x) (f p.fst p.snd)) l) = keys (List.filter (fun (p : (a : α) × β a) => (f p.fst p.snd).isSome) l)
@[simp]
theorem Std.DHashMap.Internal.List.keys_map {α : Type u} {β : αType v} {γ : αType w} [BEq α] {l : List ((a : α) × β a)} {f : (a : α) → β aγ a} :
keys (List.map (fun (p : (a : α) × β a) => p.fst, f p.fst p.snd) l) = keys l
theorem Std.DHashMap.Internal.List.DistinctKeys.filterMap {α : Type u} {β : αType v} {γ : αType w} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {f : (a : α) → β aOption (γ a)} :
DistinctKeys lDistinctKeys (List.filterMap (fun (p : (a : α) × β a) => Option.map (fun (x : γ p.fst) => p.fst, x) (f p.fst p.snd)) l)
theorem Std.DHashMap.Internal.List.DistinctKeys.map {α : Type u} {β : αType v} {γ : αType w} [BEq α] {l : List ((a : α) × β a)} {f : (a : α) → β aγ a} (h : DistinctKeys l) :
DistinctKeys (List.map (fun (p : (a : α) × β a) => p.fst, f p.fst p.snd) l)
theorem Std.DHashMap.Internal.List.DistinctKeys.filter {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {f : (a : α) → β aBool} (h : DistinctKeys l) :
DistinctKeys (List.filter (fun (p : (a : α) × β a) => f p.fst p.snd) l)
theorem Std.DHashMap.Internal.List.getValue?_eraseKey_self {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k : α} (h : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValue?_eraseKey_of_beq {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} (hl : DistinctKeys l) (hka : (k == a) = true) :
theorem Std.DHashMap.Internal.List.getValue?_eraseKey_of_false {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} (hka : (k == a) = false) :
theorem Std.DHashMap.Internal.List.getValue?_eraseKey {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey?_eraseKey {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey?_eraseKey_self {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey!_eraseKey {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] [Inhabited α] {l : List ((a : α) × β a)} {k a : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey!_eraseKey_self {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] [Inhabited α] {l : List ((a : α) × β a)} {k : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKeyD_eraseKey {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a fallback : α} (hl : DistinctKeys l) :
getKeyD a (eraseKey k l) fallback = if (k == a) = true then fallback else getKeyD a l fallback
theorem Std.DHashMap.Internal.List.getKeyD_eraseKey_self {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k fallback : α} (hl : DistinctKeys l) :
getKeyD k (eraseKey k l) fallback = fallback
theorem Std.DHashMap.Internal.List.containsKey_eraseKey_self {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k : α} (h : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.containsKey_eraseKey_of_beq {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} (hl : DistinctKeys l) (hka : (a == k) = true) :
theorem Std.DHashMap.Internal.List.containsKey_eraseKey_of_false {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} (hka : (k == a) = false) :
theorem Std.DHashMap.Internal.List.containsKey_eraseKey {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueCast?_eraseKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueCast?_eraseKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueCast!_eraseKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} [Inhabited (β a)] (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueCast!_eraseKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k : α} [Inhabited (β k)] (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueCastD_eraseKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {fallback : β a} (hl : DistinctKeys l) :
getValueCastD a (eraseKey k l) fallback = if (k == a) = true then fallback else getValueCastD a l fallback
theorem Std.DHashMap.Internal.List.getValueCastD_eraseKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k : α} {fallback : β k} (hl : DistinctKeys l) :
getValueCastD k (eraseKey k l) fallback = fallback
theorem Std.DHashMap.Internal.List.getValue!_eraseKey {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] [Inhabited β] {l : List ((_ : α) × β)} {k a : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValue!_eraseKey_self {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] [Inhabited β] {l : List ((_ : α) × β)} {k : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueD_eraseKey {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {fallback : β} (hl : DistinctKeys l) :
getValueD a (eraseKey k l) fallback = if (k == a) = true then fallback else getValueD a l fallback
theorem Std.DHashMap.Internal.List.getValueD_eraseKey_self {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k : α} {fallback : β} (hl : DistinctKeys l) :
getValueD k (eraseKey k l) fallback = fallback
theorem Std.DHashMap.Internal.List.containsKey_of_containsKey_eraseKey {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l : List ((a : α) × β a)} {k a : α} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueCast_eraseKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l : List ((a : α) × β a)} {k a : α} {h : containsKey a (eraseKey k l) = true} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValue_eraseKey {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {k a : α} {h : containsKey a (eraseKey k l) = true} (hl : DistinctKeys l) :
getValue a (eraseKey k l) h = getValue a l
theorem Std.DHashMap.Internal.List.getKey_eraseKey {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l : List ((a : α) × β a)} {k a : α} {h : containsKey a (eraseKey k l) = true} (hl : DistinctKeys l) :
getKey a (eraseKey k l) h = getKey a l
theorem Std.DHashMap.Internal.List.getEntry?_of_perm {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} {a : α} (hl : DistinctKeys l) (h : l.Perm l') :
theorem Std.DHashMap.Internal.List.containsKey_of_perm {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} {k : α} (h : l.Perm l') :
theorem Std.DHashMap.Internal.List.getValueCast?_of_perm {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l l' : List ((a : α) × β a)} {a : α} (hl : DistinctKeys l) (h : l.Perm l') :
theorem Std.DHashMap.Internal.List.getValueCast_of_perm {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l l' : List ((a : α) × β a)} {a : α} {h' : containsKey a l = true} (hl : DistinctKeys l) (h : l.Perm l') :
getValueCast a l h' = getValueCast a l'
theorem Std.DHashMap.Internal.List.getValueCast!_of_perm {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l l' : List ((a : α) × β a)} {a : α} [Inhabited (β a)] (hl : DistinctKeys l) (h : l.Perm l') :
theorem Std.DHashMap.Internal.List.getValueCastD_of_perm {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l l' : List ((a : α) × β a)} {a : α} {fallback : β a} (hl : DistinctKeys l) (h : l.Perm l') :
getValueCastD a l fallback = getValueCastD a l' fallback
theorem Std.DHashMap.Internal.List.getValue?_of_perm {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l l' : List ((_ : α) × β)} {a : α} (hl : DistinctKeys l) (h : l.Perm l') :
theorem Std.DHashMap.Internal.List.getValue_of_perm {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l l' : List ((_ : α) × β)} {a : α} {h' : containsKey a l = true} (hl : DistinctKeys l) (h : l.Perm l') :
getValue a l h' = getValue a l'
theorem Std.DHashMap.Internal.List.getValue!_of_perm {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] [Inhabited β] {l l' : List ((_ : α) × β)} {a : α} (hl : DistinctKeys l) (h : l.Perm l') :
theorem Std.DHashMap.Internal.List.getValueD_of_perm {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l l' : List ((_ : α) × β)} {a : α} {fallback : β} (hl : DistinctKeys l) (h : l.Perm l') :
getValueD a l fallback = getValueD a l' fallback
theorem Std.DHashMap.Internal.List.getKey?_of_perm {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} {a : α} (hl : DistinctKeys l) (h : l.Perm l') :
getKey? a l = getKey? a l'
theorem Std.DHashMap.Internal.List.getKey_of_perm {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} {a : α} {h' : containsKey a l = true} (hl : DistinctKeys l) (h : l.Perm l') :
getKey a l h' = getKey a l'
theorem Std.DHashMap.Internal.List.getKey!_of_perm {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] [Inhabited α] {l l' : List ((a : α) × β a)} {a : α} (hl : DistinctKeys l) (h : l.Perm l') :
getKey! a l = getKey! a l'
theorem Std.DHashMap.Internal.List.getKeyD_of_perm {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} {a fallback : α} (hl : DistinctKeys l) (h : l.Perm l') :
getKeyD a l fallback = getKeyD a l' fallback
theorem Std.DHashMap.Internal.List.perm_cons_getEntry {α : Type u} {β : αType v} [BEq α] {l : List ((a : α) × β a)} {a : α} (h : containsKey a l = true) :
(l' : List ((a : α) × β a)), l.Perm (getEntry a l h :: l')
theorem Std.DHashMap.Internal.List.getEntry?_ext {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l l' : List ((a : α) × β a)} (hl : DistinctKeys l) (hl' : DistinctKeys l') (h : ∀ (a : α), getEntry? a l = getEntry? a l') :
l.Perm l'
theorem Std.DHashMap.Internal.List.replaceEntry_of_perm {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l l' : List ((a : α) × β a)} {k : α} {v : β k} (hl : DistinctKeys l) (h : l.Perm l') :
(replaceEntry k v l).Perm (replaceEntry k v l')
theorem Std.DHashMap.Internal.List.insertEntry_of_perm {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l l' : List ((a : α) × β a)} {k : α} {v : β k} (hl : DistinctKeys l) (h : l.Perm l') :
(insertEntry k v l).Perm (insertEntry k v l')
theorem Std.DHashMap.Internal.List.eraseKey_of_perm {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l l' : List ((a : α) × β a)} {k : α} (hl : DistinctKeys l) (h : l.Perm l') :
(eraseKey k l).Perm (eraseKey k l')
@[simp]
theorem Std.DHashMap.Internal.List.getEntry?_append {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {a : α} :
getEntry? a (l ++ l') = (getEntry? a l).or (getEntry? a l')
theorem Std.DHashMap.Internal.List.getEntry?_append_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {a : α} (h : containsKey a l' = false) :
getEntry? a (l ++ l') = getEntry? a l
@[simp]
theorem Std.DHashMap.Internal.List.containsKey_append {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {a : α} :
theorem Std.DHashMap.Internal.List.containsKey_flatMap_eq_false {α : Type u} {β : αType v} [BEq α] {γ : Type w} {l : List γ} {f : γList ((a : α) × β a)} {a : α} (h : ∀ (i : Nat) (h : i < l.length), containsKey a (f l[i]) = false) :
theorem Std.DHashMap.Internal.List.containsKey_append_of_not_contains_right {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {a : α} (hl' : containsKey a l' = false) :
@[simp]
theorem Std.DHashMap.Internal.List.getValue?_append {α : Type u} {β : Type v} [BEq α] {l l' : List ((_ : α) × β)} {a : α} :
getValue? a (l ++ l') = (getValue? a l).or (getValue? a l')
theorem Std.DHashMap.Internal.List.getValue?_append_of_containsKey_eq_false {α : Type u} {β : Type v} [BEq α] {l l' : List ((_ : α) × β)} {a : α} (h : containsKey a l' = false) :
getValue? a (l ++ l') = getValue? a l
theorem Std.DHashMap.Internal.List.getValue_append_of_containsKey_eq_false {α : Type u} {β : Type v} [BEq α] {l l' : List ((_ : α) × β)} {a : α} {h' : containsKey a (l ++ l') = true} (h : containsKey a l' = false) :
getValue a (l ++ l') h' = getValue a l
theorem Std.DHashMap.Internal.List.getValueCast?_append_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l l' : List ((a : α) × β a)} {a : α} (hl' : containsKey a l' = false) :
theorem Std.DHashMap.Internal.List.getValueCast_append_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l l' : List ((a : α) × β a)} {a : α} {h : containsKey a (l ++ l') = true} (hl' : containsKey a l' = false) :
getValueCast a (l ++ l') h = getValueCast a l
theorem Std.DHashMap.Internal.List.getKey?_append_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} {a : α} (hl' : containsKey a l' = false) :
getKey? a (l ++ l') = getKey? a l
theorem Std.DHashMap.Internal.List.getKey_append_of_containsKey_eq_false {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l l' : List ((a : α) × β a)} {a : α} {h : containsKey a (l ++ l') = true} (hl' : containsKey a l' = false) :
getKey a (l ++ l') h = getKey a l
theorem Std.DHashMap.Internal.List.replaceEntry_append_of_containsKey_left {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l = true) :
replaceEntry k v (l ++ l') = replaceEntry k v l ++ l'
theorem Std.DHashMap.Internal.List.replaceEntry_append_of_containsKey_left_eq_false {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l = false) :
replaceEntry k v (l ++ l') = l ++ replaceEntry k v l'
theorem Std.DHashMap.Internal.List.replaceEntry_append_of_containsKey_right_eq_false {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {k : α} {v : β k} (h : containsKey k l' = false) :
replaceEntry k v (l ++ l') = replaceEntry k v l ++ l'
theorem Std.DHashMap.Internal.List.insertEntry_append_of_not_contains_right {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {k : α} {v : β k} (h' : containsKey k l' = false) :
insertEntry k v (l ++ l') = insertEntry k v l ++ l'
theorem Std.DHashMap.Internal.List.eraseKey_append_of_containsKey_right_eq_false {α : Type u} {β : αType v} [BEq α] {l l' : List ((a : α) × β a)} {k : α} (h : containsKey k l' = false) :
eraseKey k (l ++ l') = eraseKey k l ++ l'
def Std.DHashMap.Internal.List.insertList {α : Type u} {β : αType v} [BEq α] (l toInsert : List ((a : α) × β a)) :
List ((a : α) × β a)

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.DistinctKeys.insertList {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l₁ l₂ : List ((a : α) × β a)} (h : DistinctKeys l₁) :
theorem Std.DHashMap.Internal.List.insertList_perm_of_perm_first {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l1 l2 toInsert : List ((a : α) × β a)} (h : l1.Perm l2) (distinct : DistinctKeys l1) :
(insertList l1 toInsert).Perm (insertList l2 toInsert)
theorem Std.DHashMap.Internal.List.insertList_cons_perm {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l₁ l₂ : List ((a : α) × β a)} {p : (a : α) × β a} (hl₁ : DistinctKeys l₁) (hl₂ : DistinctKeys (p :: l₂)) :
(insertList l₁ (p :: l₂)).Perm (insertEntry p.fst p.snd (insertList l₁ l₂))
theorem Std.DHashMap.Internal.List.getEntry?_insertList {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (k : α) :
getEntry? k (insertList l toInsert) = (getEntry? k toInsert).or (getEntry? k l)
theorem Std.DHashMap.Internal.List.getEntry?_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l toInsert : List ((a : α) × β a)} {k : α} (not_contains : containsKey k toInsert = false) :
getEntry? k (insertList l toInsert) = getEntry? k l
theorem Std.DHashMap.Internal.List.getEntry?_insertList_of_contains_eq_true {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} {k : α} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (contains : containsKey k toInsert = true) :
getEntry? k (insertList l toInsert) = getEntry? k toInsert
theorem Std.DHashMap.Internal.List.containsKey_insertList {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l toInsert : List ((a : α) × β a)} {k : α} :
containsKey k (insertList l toInsert) = (containsKey k l || (List.map Sigma.fst toInsert).contains k)
theorem Std.DHashMap.Internal.List.containsKey_of_containsKey_insertList {α : Type u} {β : αType v} [BEq α] [PartialEquivBEq α] {l toInsert : List ((a : α) × β a)} {k : α} (h₁ : containsKey k (insertList l toInsert) = true) (h₂ : (List.map Sigma.fst toInsert).contains k = false) :
theorem Std.DHashMap.Internal.List.getValueCast?_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l toInsert : List ((a : α) × β a)} {k : α} (not_contains : (List.map Sigma.fst toInsert).contains k = false) :
theorem Std.DHashMap.Internal.List.getValueCast?_insertList_of_mem {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l toInsert : List ((a : α) × β a)} {k k' : α} (k_beq : (k == k') = true) {v : β k} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (mem : k, v toInsert) :
getValueCast? k' (insertList l toInsert) = some (cast v)
theorem Std.DHashMap.Internal.List.getValueCast_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l toInsert : List ((a : α) × β a)} {k : α} (not_contains : (List.map Sigma.fst toInsert).contains k = false) {h : containsKey k (insertList l toInsert) = true} :
getValueCast k (insertList l toInsert) h = getValueCast k l
theorem Std.DHashMap.Internal.List.getValueCast_insertList_of_mem {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l toInsert : List ((a : α) × β a)} {k k' : α} (k_beq : (k == k') = true) (v : β k) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (mem : k, v toInsert) {h : containsKey k' (insertList l toInsert) = true} :
getValueCast k' (insertList l toInsert) h = cast v
theorem Std.DHashMap.Internal.List.getValueCast!_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l toInsert : List ((a : α) × β a)} {k : α} [Inhabited (β k)] (not_contains : (List.map Sigma.fst toInsert).contains k = false) :
theorem Std.DHashMap.Internal.List.getValueCast!_insertList_of_mem {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l toInsert : List ((a : α) × β a)} {k k' : α} (k_beq : (k == k') = true) (v : β k) [Inhabited (β k')] (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (mem : k, v toInsert) :
getValueCast! k' (insertList l toInsert) = cast v
theorem Std.DHashMap.Internal.List.getValueCastD_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l toInsert : List ((a : α) × β a)} {k : α} {fallback : β k} (not_mem : (List.map Sigma.fst toInsert).contains k = false) :
getValueCastD k (insertList l toInsert) fallback = getValueCastD k l fallback
theorem Std.DHashMap.Internal.List.getValueCastD_insertList_of_mem {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {l toInsert : List ((a : α) × β a)} {k k' : α} (k_beq : (k == k') = true) {v : β k} {fallback : β k'} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (mem : k, v toInsert) :
getValueCastD k' (insertList l toInsert) fallback = cast v
theorem Std.DHashMap.Internal.List.getKey?_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} {k : α} (not_contains : (List.map Sigma.fst toInsert).contains k = false) :
getKey? k (insertList l toInsert) = getKey? k l
theorem Std.DHashMap.Internal.List.getKey?_insertList_of_mem {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} {k k' : α} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (mem : k List.map Sigma.fst toInsert) :
getKey? k' (insertList l toInsert) = some k
theorem Std.DHashMap.Internal.List.getKey_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} {k : α} (not_contains : (List.map Sigma.fst toInsert).contains k = false) {h : containsKey k (insertList l toInsert) = true} :
getKey k (insertList l toInsert) h = getKey k l
theorem Std.DHashMap.Internal.List.getKey_insertList_of_mem {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} {k k' : α} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (mem : k List.map Sigma.fst toInsert) {h : containsKey k' (insertList l toInsert) = true} :
getKey k' (insertList l toInsert) h = k
theorem Std.DHashMap.Internal.List.getKey!_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [EquivBEq α] [Inhabited α] {l toInsert : List ((a : α) × β a)} {k : α} (contains_false : (List.map Sigma.fst toInsert).contains k = false) :
getKey! k (insertList l toInsert) = getKey! k l
theorem Std.DHashMap.Internal.List.getKey!_insertList_of_mem {α : Type u} {β : αType v} [BEq α] [EquivBEq α] [Inhabited α] {l toInsert : List ((a : α) × β a)} {k k' : α} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (mem : k List.map Sigma.fst toInsert) :
getKey! k' (insertList l toInsert) = k
theorem Std.DHashMap.Internal.List.getKeyD_insertList_of_contains_eq_false {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} {k fallback : α} (not_contains : (List.map Sigma.fst toInsert).contains k = false) :
getKeyD k (insertList l toInsert) fallback = getKeyD k l fallback
theorem Std.DHashMap.Internal.List.getKeyD_insertList_of_mem {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} {k k' fallback : α} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (mem : k List.map Sigma.fst toInsert) :
getKeyD k' (insertList l toInsert) fallback = k
theorem Std.DHashMap.Internal.List.perm_insertList {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (distinct_both : ∀ (a : α), containsKey a l = true(List.map Sigma.fst toInsert).contains a = false) :
(insertList l toInsert).Perm (l ++ toInsert)
theorem Std.DHashMap.Internal.List.length_insertList {α : Type u} {β : αType v} [BEq α] [EquivBEq α] {l toInsert : List ((a : α) × β a)} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : (a : α) × β a) => (a.fst == b.fst) = false) toInsert) (distinct_both : ∀ (a : α), containsKey a l = true(List.map Sigma.fst toInsert).contains a = false) :
(insertList l toInsert).length = l.length + toInsert.length
theorem Std.DHashMap.Internal.List.length_le_length_insertList {α : Type u} {β : αType v} [BEq α] {l toInsert : List ((a : α) × β a)} :
l.length (insertList l toInsert).length
theorem Std.DHashMap.Internal.List.length_insertList_le {α : Type u} {β : αType v} [BEq α] {l toInsert : List ((a : α) × β a)} :
(insertList l toInsert).length l.length + toInsert.length
theorem Std.DHashMap.Internal.List.isEmpty_insertList {α : Type u} {β : αType v} [BEq α] {l toInsert : List ((a : α) × β a)} :
(insertList l toInsert).isEmpty = (l.isEmpty && toInsert.isEmpty)
def Std.DHashMap.Internal.List.Prod.toSigma {α : Type u} {β : Type v} (p : α × β) :
(_ : α) × β

Internal implementation detail of the hash map

Equations
def Std.DHashMap.Internal.List.insertListConst {α : Type u} {β : Type v} [BEq α] (l : List ((_ : α) × β)) (toInsert : List (α × β)) :
List ((_ : α) × β)

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.containsKey_insertListConst {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} :
theorem Std.DHashMap.Internal.List.containsKey_of_containsKey_insertListConst {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} (h₁ : containsKey k (insertListConst l toInsert) = true) (h₂ : (List.map Prod.fst toInsert).contains k = false) :
theorem Std.DHashMap.Internal.List.getKey?_insertListConst_of_contains_eq_false {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} (not_contains : (List.map Prod.fst toInsert).contains k = false) :
getKey? k (insertListConst l toInsert) = getKey? k l
theorem Std.DHashMap.Internal.List.getKey?_insertListConst_of_mem {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k k' : α} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (mem : k List.map Prod.fst toInsert) :
getKey? k' (insertListConst l toInsert) = some k
theorem Std.DHashMap.Internal.List.getKey_insertListConst_of_contains_eq_false {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} (not_contains : (List.map Prod.fst toInsert).contains k = false) {h : containsKey k (insertListConst l toInsert) = true} :
getKey k (insertListConst l toInsert) h = getKey k l
theorem Std.DHashMap.Internal.List.getKey_insertListConst_of_mem {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k k' : α} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (mem : k List.map Prod.fst toInsert) {h : containsKey k' (insertListConst l toInsert) = true} :
getKey k' (insertListConst l toInsert) h = k
theorem Std.DHashMap.Internal.List.getKey!_insertListConst_of_contains_eq_false {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} (not_contains : (List.map Prod.fst toInsert).contains k = false) :
getKey! k (insertListConst l toInsert) = getKey! k l
theorem Std.DHashMap.Internal.List.getKey!_insertListConst_of_mem {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k k' : α} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (mem : k List.map Prod.fst toInsert) :
getKey! k' (insertListConst l toInsert) = k
theorem Std.DHashMap.Internal.List.getKeyD_insertListConst_of_contains_eq_false {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k fallback : α} (not_contains : (List.map Prod.fst toInsert).contains k = false) :
getKeyD k (insertListConst l toInsert) fallback = getKeyD k l fallback
theorem Std.DHashMap.Internal.List.getKeyD_insertListConst_of_mem {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k k' fallback : α} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (mem : k List.map Prod.fst toInsert) :
getKeyD k' (insertListConst l toInsert) fallback = k
theorem Std.DHashMap.Internal.List.length_insertListConst {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (distinct_both : ∀ (a : α), containsKey a l = true(List.map Prod.fst toInsert).contains a = false) :
(insertListConst l toInsert).length = l.length + toInsert.length
theorem Std.DHashMap.Internal.List.length_le_length_insertListConst {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} :
theorem Std.DHashMap.Internal.List.length_insertListConst_le {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} :
(insertListConst l toInsert).length l.length + toInsert.length
theorem Std.DHashMap.Internal.List.isEmpty_insertListConst {α : Type u} {β : Type v} [BEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} :
(insertListConst l toInsert).isEmpty = (l.isEmpty && toInsert.isEmpty)
theorem Std.DHashMap.Internal.List.getValue?_insertListConst_of_contains_eq_false {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} (not_contains : (List.map Prod.fst toInsert).contains k = false) :
theorem Std.DHashMap.Internal.List.getValue?_insertListConst_of_mem {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k k' : α} (k_beq : (k == k') = true) {v : β} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (mem : (k, v) toInsert) :
getValue? k' (insertListConst l toInsert) = some v
theorem Std.DHashMap.Internal.List.getValue_insertListConst_of_contains_eq_false {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} {not_contains : (List.map Prod.fst toInsert).contains k = false} {h : containsKey k (insertListConst l toInsert) = true} :
getValue k (insertListConst l toInsert) h = getValue k l
theorem Std.DHashMap.Internal.List.getValue_insertListConst_of_mem {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k k' : α} (k_beq : (k == k') = true) {v : β} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (mem : (k, v) toInsert) {h : containsKey k' (insertListConst l toInsert) = true} :
getValue k' (insertListConst l toInsert) h = v
theorem Std.DHashMap.Internal.List.getValue!_insertListConst_of_contains_eq_false {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] [Inhabited β] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} (not_contains : (List.map Prod.fst toInsert).contains k = false) :
theorem Std.DHashMap.Internal.List.getValue!_insertListConst_of_mem {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited β] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k k' : α} {v : β} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (mem : (k, v) toInsert) :
getValue! k' (insertListConst l toInsert) = v
theorem Std.DHashMap.Internal.List.getValueD_insertListConst_of_contains_eq_false {α : Type u} {β : Type v} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k : α} {fallback : β} (not_contains : (List.map Prod.fst toInsert).contains k = false) :
getValueD k (insertListConst l toInsert) fallback = getValueD k l fallback
theorem Std.DHashMap.Internal.List.getValueD_insertListConst_of_mem {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {l : List ((_ : α) × β)} {toInsert : List (α × β)} {k k' : α} {v fallback : β} (k_beq : (k == k') = true) (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α × β) => (a.fst == b.fst) = false) toInsert) (mem : (k, v) toInsert) :
getValueD k' (insertListConst l toInsert) fallback = v
theorem Std.DHashMap.Internal.List.insertListIfNewUnit_perm_of_perm_first {α : Type u} [BEq α] [EquivBEq α] {l1 l2 : List ((_ : α) × Unit)} {toInsert : List α} (h : l1.Perm l2) (distinct : DistinctKeys l1) :
(insertListIfNewUnit l1 toInsert).Perm (insertListIfNewUnit l2 toInsert)
theorem Std.DHashMap.Internal.List.DistinctKeys.insertListIfNewUnit {α : Type u} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} (distinct : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getEntry?_insertListIfNewUnit {α : Type u} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} :
getEntry? k (insertListIfNewUnit l toInsert) = (getEntry? k l).or (getEntry? k (List.map (fun (x : α) => x, ()) toInsert))
theorem Std.DHashMap.Internal.List.DistinctKeys.mapUnit {α : Type u} [BEq α] {l : List α} (distinct : List.Pairwise (fun (a b : α) => (a == b) = false) l) :
DistinctKeys (List.map (fun (x : α) => x, ()) l)
theorem Std.DHashMap.Internal.List.getEntry?_insertListIfNewUnit_of_contains_eq_false {α : Type u} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} (not_contains : toInsert.contains k = false) :
theorem Std.DHashMap.Internal.List.containsKey_insertListIfNewUnit {α : Type u} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} :
containsKey k (insertListIfNewUnit l toInsert) = (containsKey k l || toInsert.contains k)
theorem Std.DHashMap.Internal.List.containsKey_of_containsKey_insertListIfNewUnit {α : Type u} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} (h₂ : toInsert.contains k = false) :
theorem Std.DHashMap.Internal.List.getKey?_insertListIfNewUnit_of_contains_eq_false_of_contains_eq_false {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} (h' : containsKey k l = false) (h : toInsert.contains k = false) :
theorem Std.DHashMap.Internal.List.getKey?_insertListIfNewUnit_of_contains_eq_false_of_mem {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k k' : α} (k_beq : (k == k') = true) (mem' : containsKey k l = false) (distinct : List.Pairwise (fun (a b : α) => (a == b) = false) toInsert) (mem : k toInsert) :
getKey? k' (insertListIfNewUnit l toInsert) = some k
theorem Std.DHashMap.Internal.List.getKey?_insertListIfNewUnit_of_contains {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} (h : containsKey k l = true) :
theorem Std.DHashMap.Internal.List.getKey_insertListIfNewUnit_of_contains_eq_false_of_mem {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k k' : α} (k_beq : (k == k') = true) {h : containsKey k' (insertListIfNewUnit l toInsert) = true} (contains_eq_false : containsKey k l = false) (distinct : List.Pairwise (fun (a b : α) => (a == b) = false) toInsert) (mem : k toInsert) :
getKey k' (insertListIfNewUnit l toInsert) h = k
theorem Std.DHashMap.Internal.List.getKey_insertListIfNewUnit_of_contains {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} (contains : containsKey k l = true) {h : containsKey k (insertListIfNewUnit l toInsert) = true} :
getKey k (insertListIfNewUnit l toInsert) h = getKey k l contains
theorem Std.DHashMap.Internal.List.getKey!_insertListIfNewUnit_of_contains_eq_false_of_contains_eq_false {α : Type u} [BEq α] [EquivBEq α] [Inhabited α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} (contains_eq_false : containsKey k l = false) (contains_eq_false' : toInsert.contains k = false) :
theorem Std.DHashMap.Internal.List.getKey!_insertListIfNewUnit_of_contains_eq_false_of_mem {α : Type u} [BEq α] [EquivBEq α] [Inhabited α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k k' : α} (k_beq : (k == k') = true) (h : containsKey k l = false) (distinct : List.Pairwise (fun (a b : α) => (a == b) = false) toInsert) (mem : k toInsert) :
getKey! k' (insertListIfNewUnit l toInsert) = k
theorem Std.DHashMap.Internal.List.getKey!_insertListIfNewUnit_of_contains {α : Type u} [BEq α] [EquivBEq α] [Inhabited α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} (h : containsKey k l = true) :
theorem Std.DHashMap.Internal.List.getKeyD_insertListIfNewUnit_of_contains_eq_false_of_contains_eq_false {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k fallback : α} (contains_eq_false : containsKey k l = false) (contains_eq_false' : toInsert.contains k = false) :
getKeyD k (insertListIfNewUnit l toInsert) fallback = fallback
theorem Std.DHashMap.Internal.List.getKeyD_insertListIfNewUnit_of_contains_eq_false_of_mem {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k k' fallback : α} (k_beq : (k == k') = true) (h : containsKey k l = false) (distinct : List.Pairwise (fun (a b : α) => (a == b) = false) toInsert) (mem : k toInsert) :
getKeyD k' (insertListIfNewUnit l toInsert) fallback = k
theorem Std.DHashMap.Internal.List.getKeyD_insertListIfNewUnit_of_contains {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k fallback : α} (contains : containsKey k l = true) :
getKeyD k (insertListIfNewUnit l toInsert) fallback = getKeyD k l fallback
theorem Std.DHashMap.Internal.List.length_insertListIfNewUnit {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} (distinct_l : DistinctKeys l) (distinct_toInsert : List.Pairwise (fun (a b : α) => (a == b) = false) toInsert) (distinct_both : ∀ (a : α), containsKey a l = truetoInsert.contains a = false) :
(insertListIfNewUnit l toInsert).length = l.length + toInsert.length
theorem Std.DHashMap.Internal.List.length_le_length_insertListIfNewUnit {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} :
theorem Std.DHashMap.Internal.List.length_insertListIfNewUnit_le {α : Type u} [BEq α] [EquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} :
(insertListIfNewUnit l toInsert).length l.length + toInsert.length
theorem Std.DHashMap.Internal.List.isEmpty_insertListIfNewUnit {α : Type u} [BEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} :
(insertListIfNewUnit l toInsert).isEmpty = (l.isEmpty && toInsert.isEmpty)
theorem Std.DHashMap.Internal.List.getValue?_insertListIfNewUnit {α : Type u} [BEq α] [PartialEquivBEq α] {l : List ((_ : α) × Unit)} {toInsert : List α} {k : α} :
def Std.DHashMap.Internal.List.alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k : α) (f : Option (β k)Option (β k)) (l : List ((a : α) × β a)) :
List ((a : α) × β a)

Internal implementation detail of the hash map

Equations
  • One or more equations did not get rendered due to their size.
theorem Std.DHashMap.Internal.List.length_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {f : Option (β k)Option (β k)} {l : List ((a : α) × β a)} :
(alterKey k f l).length = if h : containsKey k l = true then if (f (some (getValueCast k l h))).isSome = true then l.length else l.length - 1 else if (f none).isSome = true then l.length + 1 else l.length
theorem Std.DHashMap.Internal.List.length_alterKey' {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {f : Option (β k)Option (β k)} {l : List ((a : α) × β a)} :
theorem Std.DHashMap.Internal.List.alterKey_cons_perm {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {f : Option (β k)Option (β k)} {k' : α} {v' : β k'} {l : List ((a : α) × β a)} :
(alterKey k f (k', v' :: l)).Perm (if hk : (k' == k) = true then match f (some (cast v')) with | none => l | some v => k, v :: l else k', v' :: alterKey k f l)
theorem Std.DHashMap.Internal.List.isEmpty_alterKey_eq_isEmpty_eraseKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {f : Option (β k)Option (β k)} {l : List ((a : α) × β a)} :
theorem Std.DHashMap.Internal.List.isEmpty_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {f : Option (β k)Option (β k)} {l : List ((a : α) × β a)} :
theorem Std.DHashMap.Internal.List.alterKey_of_perm {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {f : Option (β a)Option (β a)} {l l' : List ((a : α) × β a)} (hl : DistinctKeys l) (hp : l.Perm l') :
(alterKey a f l).Perm (alterKey a f l')
theorem Std.DHashMap.Internal.List.alterKey_append_of_containsKey_right_eq_false {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {f : Option (β a)Option (β a)} {l l' : List ((a : α) × β a)} (hc : containsKey a l' = false) :
alterKey a f (l ++ l') = alterKey a f l ++ l'
@[simp]
theorem Std.DHashMap.Internal.List.alterKey_nil {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {f : Option (β a)Option (β a)} :
alterKey a f [] = match f none with | none => [] | some b => [a, b]
theorem Std.DHashMap.Internal.List.containsKey_alterKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {f : Option (β a)Option (β a)} {l : List ((a : α) × β a)} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.containsKey_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} {f : Option (β k)Option (β k)} {l : List ((a : α) × β a)} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.DistinctKeys.alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {f : Option (β a)Option (β a)} {l : List ((a : α) × β a)} (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.mem_alterKey_of_key_ne {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {a : α} {f : Option (β a)Option (β a)} {l : List ((a : α) × β a)} (p : (a : α) × β a) (hne : p.fst a) :
p alterKey a f l p l
theorem Std.DHashMap.Internal.List.getValueCast?_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k k' : α) (f : Option (β k)Option (β k)) (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getValueCast? k' (alterKey k f l) = if h : (k == k') = true then cast (f (getValueCast? k l)) else getValueCast? k' l
theorem Std.DHashMap.Internal.List.getValueCast_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k k' : α) (f : Option (β k)Option (β k)) (l : List ((a : α) × β a)) (hl : DistinctKeys l) (hc : containsKey k' (alterKey k f l) = true) :
getValueCast k' (alterKey k f l) hc = if h : (k == k') = true then cast ((f (getValueCast? k l)).get ) else getValueCast k' l
theorem Std.DHashMap.Internal.List.getValueCast_alterKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k : α) (f : Option (β k)Option (β k)) (l : List ((a : α) × β a)) (hl : DistinctKeys l) (hc : containsKey k (alterKey k f l) = true) :
getValueCast k (alterKey k f l) hc = (f (getValueCast? k l)).get
theorem Std.DHashMap.Internal.List.getValueCast!_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} [Inhabited (β k')] {f : Option (β k)Option (β k)} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getValueCast! k' (alterKey k f l) = if heq : (k == k') = true then (Option.map (cast ) (f (getValueCast? k l))).get! else getValueCast! k' l
theorem Std.DHashMap.Internal.List.getValueCastD_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} {fallback : β k'} {f : Option (β k)Option (β k)} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getValueCastD k' (alterKey k f l) fallback = if heq : (k == k') = true then (Option.map (cast ) (f (getValueCast? k l))).getD fallback else getValueCastD k' l fallback
theorem Std.DHashMap.Internal.List.getKey?_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} {f : Option (β k)Option (β k)} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey!_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] [Inhabited α] {k k' : α} {f : Option (β k)Option (β k)} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] [Inhabited α] {k k' : α} {f : Option (β k)Option (β k)} (l : List ((a : α) × β a)) (hl : DistinctKeys l) (hc : containsKey k' (alterKey k f l) = true) :
getKey k' (alterKey k f l) hc = if heq : (k == k') = true then k else getKey k' l
theorem Std.DHashMap.Internal.List.getKeyD_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' fallback : α} {f : Option (β k)Option (β k)} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getKeyD k' (alterKey k f l) fallback = if (k == k') = true then if (f (getValueCast? k l)).isSome = true then k else fallback else getKeyD k' l fallback
def Std.DHashMap.Internal.List.Const.alterKey {α : Type u} {β : Type v} [BEq α] (k : α) (f : Option βOption β) (l : List ((_ : α) × β)) :
List ((_ : α) × β)

Internal implementation detail of the hash map

Equations
  • One or more equations did not get rendered due to their size.
theorem Std.DHashMap.Internal.List.Const.length_alterKey {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} :
(alterKey k f l).length = if h : containsKey k l = true then if (f (some (getValue k l h))).isSome = true then l.length else l.length - 1 else if (f none).isSome = true then l.length + 1 else l.length
theorem Std.DHashMap.Internal.List.Const.length_alterKey' {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} :
theorem Std.DHashMap.Internal.List.Const.length_alterKey_eq_add_one {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} (h : containsKey k l = false) (h' : (f (getValue? k l)).isSome = true) :
(alterKey k f l).length = l.length + 1
theorem Std.DHashMap.Internal.List.Const.length_alterKey_eq_sub_one {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} (h : containsKey k l = true) (h' : (f (getValue? k l)).isNone = true) :
(alterKey k f l).length = l.length - 1
theorem Std.DHashMap.Internal.List.Const.length_alterKey_eq_self {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} (h : containsKey k l = true) (h' : (f (getValue? k l)).isSome = true) :
theorem Std.DHashMap.Internal.List.Const.length_alterKey_eq_self' {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} (h : containsKey k l = false) (h' : (f (getValue? k l)).isNone = true) :
theorem Std.DHashMap.Internal.List.Const.alterKey_cons_perm {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {k' : α} {v' : β} {l : List ((_ : α) × β)} :
(alterKey k f (k', v' :: l)).Perm (if (k' == k) = true then match f (some v') with | none => l | some v => k, v :: l else k', v' :: alterKey k f l)
theorem Std.DHashMap.Internal.List.Const.isEmpty_alterKey_eq_isEmpty_eraseKey {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} :
(alterKey k f l).isEmpty = ((eraseKey k l).isEmpty && (f (getValue? k l)).isNone)
theorem Std.DHashMap.Internal.List.Const.isEmpty_alterKey {α : Type u} [BEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} :
(alterKey k f l).isEmpty = ((l.isEmpty || l.length == 1 && containsKey k l) && (f (getValue? k l)).isNone)
theorem Std.DHashMap.Internal.List.Const.alterKey_of_perm {α : Type u} [BEq α] {β : Type v} [EquivBEq α] {a : α} {f : Option βOption β} {l l' : List ((_ : α) × β)} (hl : DistinctKeys l) (hp : l.Perm l') :
(alterKey a f l).Perm (alterKey a f l')
theorem Std.DHashMap.Internal.List.Const.alterKey_append_of_containsKey_right_eq_false {α : Type u} [BEq α] {β : Type v} {a : α} {f : Option βOption β} {l l' : List ((_ : α) × β)} (hc : containsKey a l' = false) :
alterKey a f (l ++ l') = alterKey a f l ++ l'
@[simp]
theorem Std.DHashMap.Internal.List.Const.alterKey_nil {α : Type u} [BEq α] {β : Type v} {a : α} {f : Option βOption β} :
alterKey a f [] = match f none with | none => [] | some b => [a, b]
theorem Std.DHashMap.Internal.List.Const.containsKey_alterKey_self {α : Type u} [BEq α] {β : Type v} [EquivBEq α] {a : α} {f : Option βOption β} {l : List ((_ : α) × β)} (hl : DistinctKeys l) :
containsKey a (alterKey a f l) = (f (getValue? a l)).isSome
theorem Std.DHashMap.Internal.List.Const.mem_alterKey_of_key_not_beq {α : Type u} [BEq α] [EquivBEq α] {β : Type v} {a : α} {f : Option βOption β} {l : List ((_ : α) × β)} (p : (_ : α) × β) (hne : (p.fst == a) = false) :
p alterKey a f l p l
theorem Std.DHashMap.Internal.List.Const.containsKey_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] {k k' : α} {f : Option βOption β} {l : List ((_ : α) × β)} (hl : DistinctKeys l) :
containsKey k' (alterKey k f l) = if (k == k') = true then (f (getValue? k l)).isSome else containsKey k' l
theorem Std.DHashMap.Internal.List.Const.getValue?_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] (k k' : α) (f : Option βOption β) (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getValue? k' (alterKey k f l) = if (k == k') = true then f (getValue? k l) else getValue? k' l
theorem Std.DHashMap.Internal.List.Const.getValue_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] (k k' : α) (f : Option βOption β) (l : List ((_ : α) × β)) (hl : DistinctKeys l) (hc : containsKey k' (alterKey k f l) = true) :
getValue k' (alterKey k f l) hc = if h : (k == k') = true then (f (getValue? k l)).get else getValue k' l
theorem Std.DHashMap.Internal.List.Const.getValue_alterKey_self {α : Type u} [BEq α] {β : Type v} [EquivBEq α] (k : α) (f : Option βOption β) (l : List ((_ : α) × β)) (hl : DistinctKeys l) (hc : containsKey k (alterKey k f l) = true) :
getValue k (alterKey k f l) hc = (f (getValue? k l)).get
theorem Std.DHashMap.Internal.List.Const.getValue!_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] {k k' : α} [Inhabited β] {f : Option βOption β} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getValue! k' (alterKey k f l) = if (k == k') = true then (f (getValue? k l)).get! else getValue! k' l
theorem Std.DHashMap.Internal.List.Const.getValueD_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] {k k' : α} {fallback : β} {f : Option βOption β} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getValueD k' (alterKey k f l) fallback = if (k == k') = true then (f (getValue? k l)).getD fallback else getValueD k' l fallback
theorem Std.DHashMap.Internal.List.Const.getKey?_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] {k k' : α} {f : Option βOption β} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getKey? k' (alterKey k f l) = if (k == k') = true then if (f (getValue? k l)).isSome = true then some k else none else getKey? k' l
theorem Std.DHashMap.Internal.List.Const.getKey!_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] [Inhabited α] {k k' : α} {f : Option βOption β} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getKey! k' (alterKey k f l) = if (k == k') = true then if (f (getValue? k l)).isSome = true then k else default else getKey! k' l
theorem Std.DHashMap.Internal.List.Const.getKey_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] [Inhabited α] {k k' : α} {f : Option βOption β} (l : List ((_ : α) × β)) (hl : DistinctKeys l) (hc : containsKey k' (alterKey k f l) = true) :
getKey k' (alterKey k f l) hc = if heq : (k == k') = true then k else getKey k' l
theorem Std.DHashMap.Internal.List.Const.getKeyD_alterKey {α : Type u} [BEq α] {β : Type v} [EquivBEq α] {k k' fallback : α} {f : Option βOption β} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getKeyD k' (alterKey k f l) fallback = if (k == k') = true then if (f (getValue? k l)).isSome = true then k else fallback else getKeyD k' l fallback
theorem Std.DHashMap.Internal.List.constAlterKey_eq_alterKey {α : Type u} [BEq α] [LawfulBEq α] {β : Type v} {k : α} {f : Option βOption β} {l : List ((_ : α) × β)} :
theorem Std.DHashMap.Internal.List.DistinctKeys.constAlterKey {α : Type u} [BEq α] [EquivBEq α] {β : Type v} {a : α} {f : Option βOption β} {l : List ((_ : α) × β)} (hl : DistinctKeys l) :
def Std.DHashMap.Internal.List.modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k : α) (f : β kβ k) (l : List ((a : α) × β a)) :
List ((a : α) × β a)

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.isEmpty_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k : α) (f : β kβ k) (l : List ((a : α) × β a)) :
theorem Std.DHashMap.Internal.List.length_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k : α) (f : β kβ k) (l : List ((a : α) × β a)) :
theorem Std.DHashMap.Internal.List.containsKey_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k k' : α) (f : β kβ k) (l : List ((a : α) × β a)) :
theorem Std.DHashMap.Internal.List.modifyKey_eq_alterKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] (k : α) (f : β kβ k) (l : List ((a : α) × β a)) :
modifyKey k f l = alterKey k (fun (x : Option (β k)) => Option.map f x) l
theorem Std.DHashMap.Internal.List.getValueCast?_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getValueCast? k' (modifyKey k f l) = if h : (k == k') = true then cast (Option.map f (getValueCast? k l)) else getValueCast? k' l
@[simp]
theorem Std.DHashMap.Internal.List.getValueCast?_modifyKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueCast_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) (h : containsKey k' (modifyKey k f l) = true) :
getValueCast k' (modifyKey k f l) h = if heq : (k == k') = true then cast (f (getValueCast k l )) else getValueCast k' l
@[simp]
theorem Std.DHashMap.Internal.List.getValueCast_modifyKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) {h : containsKey k (modifyKey k f l) = true} :
getValueCast k (modifyKey k f l) h = f (getValueCast k l )
theorem Std.DHashMap.Internal.List.getValueCast!_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} [hi : Inhabited (β k')] {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getValueCast! k' (modifyKey k f l) = if heq : (k == k') = true then (Option.map (cast ) (Option.map f (getValueCast? k l))).get! else getValueCast! k' l
@[simp]
theorem Std.DHashMap.Internal.List.getValueCast!_modifyKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} [Inhabited (β k)] {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getValueCastD_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} {fallback : β k'} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getValueCastD k' (modifyKey k f l) fallback = if heq : (k == k') = true then (Option.map (cast ) (Option.map f (getValueCast? k l))).getD fallback else getValueCastD k' l fallback
@[simp]
theorem Std.DHashMap.Internal.List.getValueCastD_modifyKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {fallback : β k} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getValueCastD k (modifyKey k f l) fallback = (Option.map f (getValueCast? k l)).getD fallback
theorem Std.DHashMap.Internal.List.getKey?_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey?_modifyKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey!_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] [Inhabited α] {k k' : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey!_modifyKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] [Inhabited α] {k : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.getKey_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] [Inhabited α] {k k' : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) (h : containsKey k' (modifyKey k f l) = true) :
getKey k' (modifyKey k f l) h = if (k == k') = true then k else getKey k' l
@[simp]
theorem Std.DHashMap.Internal.List.getKey_modifyKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] [Inhabited α] {k : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) (h : containsKey k (modifyKey k f l) = true) :
getKey k (modifyKey k f l) h = k
theorem Std.DHashMap.Internal.List.getKeyD_modifyKey {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] {k k' fallback : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getKeyD k' (modifyKey k f l) fallback = if (k == k') = true then if containsKey k l = true then k else fallback else getKeyD k' l fallback
theorem Std.DHashMap.Internal.List.getKeyD_modifyKey_self {α : Type u} {β : αType v} [BEq α] [LawfulBEq α] [Inhabited α] {k fallback : α} {f : β kβ k} (l : List ((a : α) × β a)) (hl : DistinctKeys l) :
getKeyD k (modifyKey k f l) fallback = if containsKey k l = true then k else fallback
def Std.DHashMap.Internal.List.Const.modifyKey {α : Type u} {β : Type v} [BEq α] (k : α) (f : ββ) (l : List ((_ : α) × β)) :
List ((_ : α) × β)

Internal implementation detail of the hash map

Equations
theorem Std.DHashMap.Internal.List.Const.isEmpty_modifyKey {α : Type u} {β : Type v} [BEq α] (k : α) (f : ββ) (l : List ((_ : α) × β)) :
theorem Std.DHashMap.Internal.List.Const.modifyKey_eq_alterKey {α : Type u} {β : Type v} [BEq α] (k : α) (f : ββ) (l : List ((_ : α) × β)) :
modifyKey k f l = alterKey k (fun (x : Option β) => Option.map f x) l
theorem Std.DHashMap.Internal.List.Const.length_modifyKey {α : Type u} {β : Type v} [BEq α] (k : α) (f : ββ) (l : List ((_ : α) × β)) :
theorem Std.DHashMap.Internal.List.Const.containsKey_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] (k k' : α) (f : ββ) (l : List ((_ : α) × β)) :
theorem Std.DHashMap.Internal.List.Const.getValue?_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k k' : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
@[simp]
theorem Std.DHashMap.Internal.List.Const.getValue?_modifyKey_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.Const.getValue_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k k' : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) (h : containsKey k' (modifyKey k f l) = true) :
getValue k' (modifyKey k f l) h = if heq : (k == k') = true then f (getValue k l ) else getValue k' l
@[simp]
theorem Std.DHashMap.Internal.List.Const.getValue_modifyKey_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) {h : containsKey k (modifyKey k f l) = true} :
getValue k (modifyKey k f l) h = f (getValue k l )
theorem Std.DHashMap.Internal.List.Const.getValue!_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k k' : α} [hi : Inhabited β] {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
@[simp]
theorem Std.DHashMap.Internal.List.Const.getValue!_modifyKey_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k : α} [Inhabited β] {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.Const.getValueD_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k k' : α} {fallback : β} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getValueD k' (modifyKey k f l) fallback = if (k == k') = true then (Option.map f (getValue? k l)).getD fallback else getValueD k' l fallback
@[simp]
theorem Std.DHashMap.Internal.List.Const.getValueD_modifyKey_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k : α} {fallback : β} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getValueD k (modifyKey k f l) fallback = (Option.map f (getValue? k l)).getD fallback
theorem Std.DHashMap.Internal.List.Const.getKey?_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k k' : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.Const.getKey?_modifyKey_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.Const.getKey!_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited α] {k k' : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.Const.getKey!_modifyKey_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited α] {k : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
theorem Std.DHashMap.Internal.List.Const.getKey_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited α] {k k' : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) (h : containsKey k' (modifyKey k f l) = true) :
getKey k' (modifyKey k f l) h = if (k == k') = true then k else getKey k' l
@[simp]
theorem Std.DHashMap.Internal.List.Const.getKey_modifyKey_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited α] {k : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) (h : containsKey k (modifyKey k f l) = true) :
getKey k (modifyKey k f l) h = k
theorem Std.DHashMap.Internal.List.Const.getKeyD_modifyKey {α : Type u} {β : Type v} [BEq α] [EquivBEq α] {k k' fallback : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getKeyD k' (modifyKey k f l) fallback = if (k == k') = true then if containsKey k l = true then k else fallback else getKeyD k' l fallback
theorem Std.DHashMap.Internal.List.Const.getKeyD_modifyKey_self {α : Type u} {β : Type v} [BEq α] [EquivBEq α] [Inhabited α] {k fallback : α} {f : ββ} (l : List ((_ : α) × β)) (hl : DistinctKeys l) :
getKeyD k (modifyKey k f l) fallback = if containsKey k l = true then k else fallback
theorem Std.DHashMap.Internal.List.constModifyKey_eq_modifyKey {α : Type u} {β : Type v} [BEq α] [LawfulBEq α] {k : α} {f : ββ} {l : List ((_ : α) × β)} :