Documentation

Projects.Util.ExtDHashMap

@[simp]
theorem Std.ExtDHashMap.not_mem_empty' {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {i : α} :
i ∉ ∅
@[simp]
theorem Std.ExtDHashMap.not_mem_lift_empty {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {i : α} :
i ∉ { inner := ⟦∅⟧ }
theorem Std.ExtDHashMap.mem_iff_get?_eq_some {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} :
i ∈ mp ↔ ∃ (x : β i), mp.get? i = some x
theorem Std.ExtDHashMap.get?_eq_some_of_mem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} (h : i ∈ mp) :
∃ (x : β i), mp.get? i = some x
theorem Std.ExtDHashMap.get?_eq_none_of_not_mem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} (h : i ∉ mp) :
mp.get? i = none
@[simp]
theorem Std.ExtDHashMap.get?_eq_none_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} :
mp.get? i = none ↔ i ∉ mp
def Std.ExtDHashMap.toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] (mp : ExtDHashMap α β) :
List ((i : α) × β i)
Equations
Instances For
    @[simp]
    theorem Std.ExtDHashMap.toList_empty {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [LinearOrder α] :
    @[simp]
    theorem Std.ExtDHashMap.ofList_snoc {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {xs : List ((a : α) × β a)} {x : (i : α) × β i} :
    @[simp]
    theorem Std.ExtDHashMap.mem_insert' {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {x : (i : α) × β i} {i : α} :
    i ∈ Insert.insert x mp ↔ i = x.fst ∨ i ∈ mp
    @[simp]
    theorem Std.ExtDHashMap.mem_ofList' {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {xs : List ((i : α) × β i)} {i : α} :
    i ∈ ofList xs ↔ ∃ (x : β i), ⟨i, x⟩ ∈ xs
    theorem Std.ExtDHashMap.eq_empty_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} :
    mp = ∅ ↔ ∀ (i : α), i ∉ mp
    theorem Std.ExtDHashMap.ext_iff' {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m₁ m₂ : ExtDHashMap α β} :
    m₁ = m₂ ↔ m₁.inner.out.Equiv m₂.inner.out
    theorem Std.ExtDHashMap.ext_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m₁ m₂ : ExtDHashMap α β} :
    m₁ = m₂ ↔ ∀ (i : α), m₁.get? i = m₂.get? i
    theorem Std.ExtDHashMap.get?_eq_ite_of_unit {α : Type u_1} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m : ExtDHashMap α fun (x : α) => Unit} {i : α} :
    theorem Std.ExtDHashMap.ofList_eq_ofList_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {xs ys : List ((i : α) × β i)} (hx : (List.map (fun (x : (i : α) × β i) => x.fst) xs).Nodup) (hy : (List.map (fun (x : (i : α) × β i) => x.fst) ys).Nodup) :
    ofList xs = ofList ys ↔ xs.Perm ys
    def Std.ExtDHashMap.range' {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] (f : (i : α) → Option (β i)) :
    Equations
    Instances For
      def Std.ExtDHashMap.range {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] (f : (i : α) → β i) :
      Equations
      Instances For
        @[simp]
        theorem Std.ExtDHashMap.mem_range {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] {f : (i : α) → β i} {i : α} :
        @[simp]
        theorem Std.ExtDHashMap.mem_range' {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] {f : (i : α) → Option (β i)} {i : α} :
        i ∈ range' f ↔ ∃ (x : β i), f i = some x
        @[simp]
        theorem Std.ExtDHashMap.nonempty_insert {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {x : (a : α) × β a} :
        Insert.insert x mp ≠ { inner := ⟦∅⟧ }
        @[simp]
        theorem Std.ExtDHashMap.nodup_toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [LinearOrder α] :
        @[simp]
        theorem Std.ExtDHashMap.pairwise_toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [LinearOrder α] :
        List.Pairwise (fun (x1 x2 : (i : α) × β i) => x1.fst ≤ x2.fst) mp.toList
        @[simp]
        theorem Std.ExtDHashMap.mem_toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {x : (i : α) × β i} [LinearOrder α] :
        x ∈ mp.toList ↔ mp.get? x.fst = some x.snd
        @[simp]
        theorem Std.ExtDHashMap.toList_eq_toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [LinearOrder α] {m₁ m₂ : ExtDHashMap α β} :
        m₁.toList = m₂.toList ↔ m₁ = m₂
        @[simp]
        theorem Std.ExtDHashMap.toList_eq_nil_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [LinearOrder α] :
        mp.toList = [] ↔ mp = ∅
        theorem Std.ExtDHashMap.eq_iff_inner_eq {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m₁ m₂ : ExtDHashMap α β} :
        m₁ = m₂ ↔ m₁.inner = m₂.inner
        theorem Std.ExtDHashMap.inner_eq_iff_eq {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m₁ m₂ : ExtDHashMap α β} :
        m₁.inner = m₂.inner ↔ m₁ = m₂
        def Std.ExtDHashMap.fold {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {γ : Type u_4} (mp : ExtDHashMap α β) (f : γ → (i : α) → β i → γ) (z : γ) (h_assoc : ∀ {acc : γ} {i : α} {x : β i} {j : α} {y : β j}, i ≠ j → f (f acc i x) j y = f (f acc j y) i x) :
        γ
        Equations
        Instances For
          def Std.ExtDHashMap.decideEq {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [hh : (i : α) → DecidableEq (β i)] (m₁ m₂ : ExtDHashMap α β) :
          Equations
          Instances For
            theorem Std.ExtDHashMap.eq_iff_decideEq {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [hh : (i : α) → DecidableEq (β i)] {m₁ m₂ : ExtDHashMap α β} :
            m₁ = m₂ ↔ m₁.decideEq m₂ = true
            @[instance_reducible]
            instance Std.ExtDHashMap.instDecidableEq_projects {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [hh : (i : α) → DecidableEq (β i)] :
            Equations
            @[simp]
            theorem Std.ExtDHashMap.decideEq_eq {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [hh : (i : α) → DecidableEq (β i)] {m₁ m₂ : ExtDHashMap α β} :
            m₁.decideEq m₂ = decide (m₁ = m₂)
            def Std.ExtDHashMap.all {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] (mp : ExtDHashMap α β) (p : (i : α) → β i → Bool) :
            Equations
            Instances For
              @[simp]
              theorem Std.ExtDHashMap.all_def {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {p : (i : α) → β i → Bool} [LinearOrder α] :
              mp.all p = decide (∀ x ∈ mp.toList, p x.fst x.snd = true)
              def Std.ExtDHashMap.keys {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] (mp : ExtDHashMap α β) :
              List α
              Equations
              Instances For
                @[simp]
                theorem Std.ExtDHashMap.mem_keys {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [LinearOrder α] {i : α} :
                i ∈ mp.keys ↔ i ∈ mp
                def Std.ExtDHashMap.modifyMany {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] (mp : ExtDHashMap α β) (xs : List ((i : α) × (β i → β i))) :
                Equations
                Instances For
                  @[simp]
                  theorem Std.ExtDHashMap.modifyMany_nil {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} :
                  @[simp]
                  theorem Std.ExtDHashMap.modifyMany_cons {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} {x : β i → β i} {xs : List ((i : α) × (β i → β i))} :
                  mp.modifyMany (⟨i, x⟩ :: xs) = (mp.modify i x).modifyMany xs
                  theorem Std.ExtDHashMap.get!_eq_get? {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} [hb : Inhabited (β i)] :
                  mp.get! i = (mp.get? i).get!
                  theorem Std.ExtDHashMap.get?_eq_ite {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} [hb : Inhabited (β i)] :
                  mp.get? i = if i ∈ mp then some (mp.get! i) else none
                  theorem Std.ExtDHashMap.get?_ofList_eq_some_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {xs : List ((i : α) × β i)} {i : α} {x : β i} (h : (List.map (fun (x : (i : α) × β i) => x.fst) xs).Nodup) :
                  (ofList xs).get? i = some x ↔ ⟨i, x⟩ ∈ xs
                  @[simp]
                  theorem Std.ExtDHashMap.get?_range {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] {f : (i : α) → β i} {i : α} :
                  (range f).get? i = some (f i)
                  @[simp]
                  theorem Std.ExtDHashMap.get?_range' {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] {f : (i : α) → Option (β i)} {i : α} :
                  (range' f).get? i = f i
                  theorem Std.ExtDHashMap.injective_range {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] :
                  theorem Std.ExtDHashMap.injective_range' {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] :
                  @[instance_reducible]
                  instance Std.ExtDHashMap.instFintype_projects {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] [hb : (i : α) → Fintype (β i)] :
                  Equations
                  instance Std.ExtDHashMap.instFinite_projects {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Finite α] [hb : ∀ (i : α), Finite (β i)] :
                  @[simp]
                  theorem Std.ExtDHashMap.range_eq_range_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] {f g : (i : α) → β i} :
                  range f = range g ↔ ∀ (x : α), f x = g x
                  @[simp]
                  theorem Std.ExtDHashMap.range'_eq_range'_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : Fintype α] {f g : (i : α) → Option (β i)} :
                  range' f = range' g ↔ ∀ (x : α), f x = g x
                  theorem Std.ExtDHashMap.mem_of_get?_eq_some {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} {x : β i} (h : mp.get? i = some x) :
                  i ∈ mp
                  @[simp]
                  theorem Std.ExtDHashMap.get?_eq_some_get!_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} [hb : Inhabited (β i)] :
                  mp.get? i = some (mp.get! i) ↔ i ∈ mp
                  @[simp]
                  theorem Std.ExtDHashMap.get?_eq_some_get?_get! {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} [hb : Inhabited (β i)] :
                  mp.get? i = some (mp.get? i).get! ↔ i ∈ mp
                  theorem Std.ExtDHashMap.fold_eq_foldl_toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] {γ : Type u_4} {z : γ} {f : γ → (i : α) → β i → γ} {h_assoc : ∀ {acc : γ} {i : α} {x : β i} {j : α} {y : β j}, i ≠ j → f (f acc i x) j y = f (f acc j y) i x} :
                  mp.fold f z h_assoc = List.foldl (fun (acc : γ) (x : (i : α) × β i) => f acc x.fst x.snd) z mp.toList
                  theorem Std.ExtDHashMap.eq_iff_toList_eq {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] {m₁ m₂ : ExtDHashMap α β} :
                  m₁ = m₂ ↔ m₁.toList = m₂.toList
                  @[simp]
                  theorem Std.ExtDHashMap.ofList_toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                  theorem Std.ExtDHashMap.toList_ofList_perm {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] {xs : List ((i : α) × β i)} (h : (List.map (fun (x : (i : α) × β i) => x.fst) xs).Nodup) :
                  @[simp]
                  theorem Std.ExtDHashMap.sortedLE_keys {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                  theorem Std.ExtDHashMap.keys_eq_map_fst_toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                  mp.keys = List.map (fun (x : (i : α) × β i) => x.fst) mp.toList
                  def Std.ExtDHashMap.minKey? {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] (mp : ExtDHashMap α β) :
                  Equations
                  Instances For
                    def Std.ExtDHashMap.maxKey? {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] (mp : ExtDHashMap α β) :
                    Equations
                    Instances For
                      def Std.ExtDHashMap.minKey! {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] [Inhabited α] (mp : ExtDHashMap α β) :
                      α
                      Equations
                      Instances For
                        def Std.ExtDHashMap.maxKey! {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] [Inhabited α] (mp : ExtDHashMap α β) :
                        α
                        Equations
                        Instances For
                          theorem Std.ExtDHashMap.minKey?_eq_head?_keys {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                          theorem Std.ExtDHashMap.maxKey?_eq_getLast?_keys {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                          @[simp]
                          theorem Std.ExtDHashMap.minKey?_eq_none_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                          @[simp]
                          theorem Std.ExtDHashMap.maxKey?_eq_none_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                          theorem Std.ExtDHashMap.not_mem_of_lt_minKey? {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] {m x : α} (h₁ : mp.minKey? = some m) (h₂ : x < m) :
                          x ∉ mp
                          theorem Std.ExtDHashMap.not_mem_of_maxKey?_lt {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] {m x : α} (h₁ : mp.maxKey? = some m) (h₂ : m < x) :
                          x ∉ mp
                          theorem Std.ExtDHashMap.not_mem_of_lt_minKey! {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha₁ : Inhabited α] [ha₂ : LinearOrder α] {x : α} (h : x < mp.minKey!) :
                          x ∉ mp
                          theorem Std.ExtDHashMap.not_mem_of_maxKey!_lt {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha₁ : Inhabited α] [ha₂ : LinearOrder α] {x : α} (h : mp.maxKey! < x) :
                          x ∉ mp
                          theorem Std.ExtDHashMap.minKey?_le_of_mem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] {m x : α} (h₁ : mp.minKey? = some m) (h₂ : x ∈ mp) :
                          m ≤ x
                          theorem Std.ExtDHashMap.le_maxKey?_of_mem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] {m x : α} (h₁ : mp.maxKey? = some m) (h₂ : x ∈ mp) :
                          x ≤ m
                          theorem Std.ExtDHashMap.minKey!_le_of_mem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha₁ : Inhabited α] [ha₂ : LinearOrder α] {x : α} (h : x ∈ mp) :
                          theorem Std.ExtDHashMap.le_maxKey!_of_mem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha₁ : Inhabited α] [ha₂ : LinearOrder α] {x : α} (h : x ∈ mp) :
                          @[simp]
                          theorem Std.ExtDHashMap.keys_eq_nil_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [LinearOrder α] :
                          @[simp]
                          theorem Std.ExtDHashMap.keys_empty {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [LinearOrder α] :
                          theorem Std.ExtDHashMap.ind {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {p : ExtDHashMap α β → Prop} (h₁ : p ∅) (h₂ : ∀ (mp : ExtDHashMap α β) (i : α) (x : β i), i ∉ mp → p mp → p (mp.insert i x)) (mp : ExtDHashMap α β) :
                          p mp
                          @[simp]
                          theorem Std.ExtDHashMap.fold_empty {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {γ : Type u_4} {f : γ → (i : α) → β i → γ} {z : γ} {h : ∀ {acc : γ} {i : α} {x : β i} {j : α} {y : β j}, i ≠ j → f (f acc i x) j y = f (f acc j y) i x} :
                          ∅.fold f z h = z
                          theorem Std.ExtDHashMap.fold_insert {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {γ : Type u_4} {f : γ → (i : α) → β i → γ} {z : γ} {h : ∀ {acc : γ} {i : α} {x : β i} {j : α} {y : β j}, i ≠ j → f (f acc i x) j y = f (f acc j y) i x} {i : α} {x : β i} (h₁ : i ∉ mp) :
                          (mp.insert i x).fold f z h = mp.fold f (f z i x) ⋯
                          theorem Std.ExtDHashMap.insert_comm {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} {x : β i} {j : α} {y : β j} (h : i ≠ j ∨ x ≍ y) :
                          (mp.insert i x).insert j y = (mp.insert j y).insert i x
                          @[simp]
                          theorem Std.ExtDHashMap.insert_idemp {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} {x : β i} :
                          (mp.insert i x).insert i x = mp.insert i x
                          def Std.ExtDHashMap.count {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] (mp : ExtDHashMap α β) (p : (i : α) → β i → Bool) :
                          Equations
                          Instances For
                            @[simp]
                            theorem Std.ExtDHashMap.size_filter_eq_count {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {p : (a : α) → β a → Bool} :
                            (filter p mp).size = mp.count p
                            theorem Std.ExtDHashMap.count_eq_size_filter {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {p : (i : α) → β i → Bool} :
                            mp.count p = (filter p mp).size
                            @[simp]
                            theorem Std.ExtDHashMap.count_le_size {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {p : (i : α) → β i → Bool} :
                            mp.count p ≤ mp.size
                            theorem Std.ExtDHashMap.count_eq_zero_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {p : (i : α) → β i → Bool} :
                            mp.count p = 0 ↔ ∀ (i : α) (x : β i), mp.get? i = some x → ¬p i x = true
                            @[simp]
                            theorem Std.ExtDHashMap.count_empty {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {p : (i : α) → β i → Bool} :
                            ∅.count p = 0
                            theorem Std.ExtDHashMap.count_insert {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {p : (i : α) → β i → Bool} {i : α} {x : β i} (h : i ∉ mp) :
                            (mp.insert i x).count p = mp.count p + if p i x = true then 1 else 0
                            theorem Std.ExtDHashMap.eq_iff_inner {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp₁ mp₂ : ExtDHashMap α β} :
                            mp₁ = mp₂ ↔ mp₁.inner = mp₂.inner
                            @[simp]
                            theorem Std.ExtDHashMap.mem_mk_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : DHashMap α β} {i : α} :
                            i ∈ { inner := ⟦mp⟧ } ↔ i ∈ mp
                            theorem Std.ExtDHashMap.modify_of_notMem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} {i : α} {f : β i → β i} (h : i ∉ mp) :
                            mp.modify i f = mp
                            theorem Std.ExtDHashMap.toList_insert_perm_cons_of_notMem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] {i : α} {x : β i} (h : i ∉ mp) :
                            (mp.insert i x).toList.Perm (⟨i, x⟩ :: mp.toList)
                            @[simp]
                            theorem Std.ExtDHashMap.nodup_keys {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                            @[simp]
                            theorem Std.ExtDHashMap.sortedLT_keys {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] :
                            theorem Std.ExtDHashMap.union_def {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp₁ mp₂ : ExtDHashMap α β} :
                            mp₁ ∪ mp₂ = mp₁.union mp₂
                            @[simp]
                            theorem Std.ExtDHashMap.get?_out_mk {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : DHashMap α β} :
                            @[simp]
                            theorem Std.ExtDHashMap.empty_union {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} :
                            ∅ ∪ mp = mp
                            @[simp]
                            theorem Std.ExtDHashMap.union_empty {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} :
                            mp ∪ ∅ = mp
                            theorem Std.ExtDHashMap.toList_insert_of_not_mem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m : ExtDHashMap α β} [ha : LinearOrder α] {i : α} {x : β i} (h : i ∉ m) :
                            (m.insert i x).toList = (⟨i, x⟩ :: m.toList).mergeSort fun (x1 x2 : (i : α) × β i) => decide (x1.fst ≤ x2.fst)
                            theorem Std.ExtDHashMap.keys_insert_of_not_mem {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m : ExtDHashMap α β} [ha : LinearOrder α] {i : α} {x : β i} (h : i ∉ m) :
                            (m.insert i x).keys = (i :: m.keys).mergeSort fun (a b : α) => decide (a ≤ b)
                            @[simp]
                            theorem Std.ExtDHashMap.get?_out_inner {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m : ExtDHashMap α β} {i : α} :
                            m.inner.out.get? i = m.get? i
                            @[simp]
                            theorem Std.ExtDHashMap.get?_mk {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m : Quotient (DHashMap.isSetoid α β)} {i : α} :
                            { inner := m }.get? i = m.out.get? i
                            @[simp]
                            theorem Std.ExtDHashMap.insert_mk {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m : Quotient (DHashMap.isSetoid α β)} {i : α} {x : β i} :
                            { inner := m }.insert i x = { inner := ⟦m.out.insert i x⟧ }
                            @[simp]
                            theorem Std.ExtDHashMap.erase_mk {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m : Quotient (DHashMap.isSetoid α β)} {i : α} :
                            { inner := m }.erase i = { inner := ⟦m.out.erase i⟧ }
                            @[simp]
                            theorem Std.ExtDHashMap.insert_erase_eq_self_iff {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m : ExtDHashMap α β} {i : α} {x : β i} :
                            (m.erase i).insert i x = m ↔ m.get? i = some x
                            @[simp]
                            theorem Std.ExtDHashMap.keys_eq_keys_iff {α : Type u_1} {β : α → Type u_2} {γ : α → Type u_3} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] {m₁ : ExtDHashMap α β} {m₂ : ExtDHashMap α γ} :
                            m₁.keys = m₂.keys ↔ ∀ (i : α), i ∈ m₁ ↔ i ∈ m₂
                            theorem Std.ExtDHashMap.toList_ofList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] {xs : List ((i : α) × β i)} (h : (List.map (fun (x : (i : α) × β i) => x.fst) xs).Nodup) :
                            (ofList xs).toList = xs.mergeSort fun (x1 x2 : (i : α) × β i) => decide (x1.fst ≤ x2.fst)
                            theorem Std.ExtDHashMap.union_eq_union_iff_right {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {m m₁ m₂ : ExtDHashMap α β} (h₁ : ∀ i ∈ m, i ∉ m₁) (h₂ : ∀ i ∈ m, i ∉ m₂) :
                            m ∪ m₁ = m ∪ m₂ ↔ m₁ = m₂
                            theorem Std.ExtDHashMap.get?_eq_some_iff_mem_toList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {mp : ExtDHashMap α β} [ha : LinearOrder α] {i : α} {x : β i} :
                            mp.get? i = some x ↔ ⟨i, x⟩ ∈ mp.toList
                            theorem Std.ExtDHashMap.toList_ofList_subset {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] {xs : List ((i : α) × β i)} :
                            (ofList xs).toList ⊆ xs
                            theorem Std.ExtDHashMap.mem_of_mem_toList_ofList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] [ha : LinearOrder α] {xs : List ((i : α) × β i)} {p : (i : α) × β i} (h : p ∈ (ofList xs).toList) :
                            p ∈ xs
                            theorem Std.ExtDHashMap.mem_of_get?_ofList {α : Type u_1} {β : α → Type u_2} [hh₁ : DecidableEq α] [hh₂ : Hashable α] {xs : List ((i : α) × β i)} {i : α} {x : β i} (h : (ofList xs).get? i = some x) :
                            ⟨i, x⟩ ∈ xs