Documentation

Std.Data.DHashMap.Internal.Model

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

In this file we define functions for manipulating a hash map based on operations defined in terms of their buckets. Then we give "model implementations" of the hash map operations in terms of these basic building blocks and show that the actual operations are equal to the model implementations T his means that later we will be able to prove properties of the operations by proving general facts about the basic building blocks.

Setting up the infrastructure #

def Std.DHashMap.Internal.bucket {α : Type u} {β : α → Type v} [Hashable α] (self : Array (AssocList α β)) (h : 0 < self.size) (k : α) :
AssocList α β

Internal implementation detail of the hash map

Instances For
    theorem Std.DHashMap.Internal.bucket_eq {α : Type u} {β : α → Type v} [Hashable α] (self : Array (AssocList α β)) (h : 0 < self.size) (k : α) :
    bucket self h k = self[(mkIdx self.size h (hash k)).val]
    def Std.DHashMap.Internal.updateBucket {α : Type u} {β : α → Type v} [Hashable α] (self : Array (AssocList α β)) (h : 0 < self.size) (k : α) (f : AssocList α β → AssocList α β) :

    Internal implementation detail of the hash map

    Instances For
      def Std.DHashMap.Internal.updateAllBuckets {α : Type u} {β : α → Type v} {δ : α → Type w} (self : Array (AssocList α β)) (f : AssocList α β → AssocList α δ) :

      Internal implementation detail of the hash map

      Instances For
        def Std.DHashMap.Internal.withComputedSize {α : Type u} {β : α → Type v} (self : Array (AssocList α β)) :
        Raw α β

        Internal implementation detail of the hash map

        Instances For
          @[simp]
          theorem Std.DHashMap.Internal.size_updateBucket {α : Type u} {β : α → Type v} [Hashable α] {self : Array (AssocList α β)} {h : 0 < self.size} {k : α} {f : AssocList α β → AssocList α β} :
          (updateBucket self h k f).size = self.size
          @[simp]
          theorem Std.DHashMap.Internal.size_updateAllBuckets {α : Type u} {β : α → Type v} {δ : α → Type w} {self : Array (AssocList α β)} {f : AssocList α β → AssocList α δ} :
          (updateAllBuckets self f).size = self.size
          @[simp]
          theorem Std.DHashMap.Internal.buckets_size_withComputedSize {α : Type u} {β : α → Type v} {self : Array (AssocList α β)} :
          @[simp]
          theorem Std.DHashMap.Internal.size_withComputedSize {α : Type u} {β : α → Type v} {self : Array (AssocList α β)} :
          @[simp]
          theorem Std.DHashMap.Internal.buckets_withComputedSize {α : Type u} {β : α → Type v} {self : Array (AssocList α β)} :
          @[simp]
          theorem Std.DHashMap.Internal.bucket_updateBucket {α : Type u} {β : α → Type v} [Hashable α] (self : Array (AssocList α β)) (h : 0 < self.size) (k : α) (f : AssocList α β → AssocList α β) :
          bucket (updateBucket self h k f) ⋯ k = f (bucket self h k)
          theorem Std.DHashMap.Internal.exists_bucket_of_uset {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (self : Array (AssocList α β)) (i : USize) (hi : i.toNat < self.size) (d : AssocList α β) :
          ∃ (l : List ((a : α) × β a)), (toListModel self).Perm (self[i.toNat].toList ++ l) ∧ (toListModel (self.uset i d hi)).Perm (d.toList ++ l) ∧ ∀ [LawfulHashable α], IsHashSelf self → ∀ (k : α), (mkIdx self.size ⋯ (hash k)).val.toNat = i.toNat → Internal.List.containsKey k l = false
          theorem Std.DHashMap.Internal.exists_bucket_of_update {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Array (AssocList α β)) (h : 0 < m.size) (k : α) (f : AssocList α β → AssocList α β) :
          ∃ (l : List ((a : α) × β a)), (toListModel m).Perm ((bucket m h k).toList ++ l) ∧ (toListModel (updateBucket m h k f)).Perm ((f (bucket m h k)).toList ++ l) ∧ ∀ [LawfulHashable α], IsHashSelf m → ∀ (k' : α), hash k = hash k' → Internal.List.containsKey k' l = false
          theorem Std.DHashMap.Internal.exists_bucket' {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (self : Array (AssocList α β)) (i : USize) (hi : i.toNat < self.size) :
          ∃ (l : List ((a : α) × β a)), (List.flatMap AssocList.toList self.toList).Perm (self[i.toNat].toList ++ l) ∧ ∀ [LawfulHashable α], IsHashSelf self → ∀ (k : α), (mkIdx self.size ⋯ (hash k)).val.toNat = i.toNat → Internal.List.containsKey k l = false
          theorem Std.DHashMap.Internal.exists_bucket {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Array (AssocList α β)) (h : 0 < m.size) (k : α) :
          ∃ (l : List ((a : α) × β a)), (toListModel m).Perm ((bucket m h k).toList ++ l) ∧ ∀ [LawfulHashable α], IsHashSelf m → ∀ (k' : α), hash k = hash k' → Internal.List.containsKey k' l = false
          theorem Std.DHashMap.Internal.apply_bucket {α : Type u} {β : α → Type v} {γ : Type w} [BEq α] [Hashable α] [PartialEquivBEq α] [LawfulHashable α] {m : Raw₀ α β} (hm : Raw.WFImp m.val) {a : α} {f : AssocList α β → γ} {g : List ((a : α) × β a) → γ} (hfg : ∀ {l : AssocList α β}, f l = g l.toList) (hg₁ : ∀ {l l' : List ((a : α) × β a)}, Internal.List.DistinctKeys l → l.Perm l' → g l = g l') (hg₂ : ∀ {l l' : List ((a : α) × β a)}, Internal.List.containsKey a l' = false → g (l ++ l') = g l) :

          This is the general theorem used to show that access operations are correct.

          theorem Std.DHashMap.Internal.apply_bucket_with_proof {α : Type u} {β : α → Type v} {γ : α → Type w} [BEq α] [Hashable α] [PartialEquivBEq α] [LawfulHashable α] {m : Raw₀ α β} (hm : Raw.WFImp m.val) (a : α) (f : (a : α) → (l : AssocList α β) → AssocList.contains a l = true → γ a) (g : (a : α) → (l : List ((a : α) × β a)) → Internal.List.containsKey a l = true → γ a) (hfg : ∀ {a : α} {l : AssocList α β} {h : AssocList.contains a l = true}, f a l h = g a l.toList ⋯) (hg₁ : ∀ {l l' : List ((a : α) × β a)} {a : α} {h : Internal.List.containsKey a l = true}, Internal.List.DistinctKeys l → ∀ (hl' : l.Perm l'), g a l h = g a l' ⋯) {h : AssocList.contains a (bucket m.val.buckets ⋯ a) = true} {h' : Internal.List.containsKey a (toListModel m.val.buckets) = true} (hg₂ : ∀ {l l' : List ((a : α) × β a)} {a : α} {h : Internal.List.containsKey a (l ++ l') = true} (hl' : Internal.List.containsKey a l' = false), g a (l ++ l') h = g a l ⋯) :
          f a (bucket m.val.buckets ⋯ a) h = g a (toListModel m.val.buckets) h'

          This is the general theorem used to show that access operations involving a proof (like get) are correct.

          theorem Std.DHashMap.Internal.toListModel_updateBucket {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [PartialEquivBEq α] [LawfulHashable α] {m : Raw₀ α β} (hm : Raw.WFImp m.val) {a : α} {f : AssocList α β → AssocList α β} {g : List ((a : α) × β a) → List ((a : α) × β a)} (hfg : ∀ {l : AssocList α β}, (f l).toList.Perm (g l.toList)) (hg₁ : ∀ {l l' : List ((a : α) × β a)}, Internal.List.DistinctKeys l → l.Perm l' → (g l).Perm (g l')) (hg₂ : ∀ {l l' : List ((a : α) × β a)}, Internal.List.containsKey a l' = false → g (l ++ l') = g l ++ l') :

          This is the general theorem to show that modification operations are correct.

          theorem Std.DHashMap.Internal.toListModel_updateAllBuckets {α : Type u} {β : α → Type v} {δ : α → Type w} {m : Raw₀ α β} {f : AssocList α β → AssocList α δ} {g : List ((a : α) × β a) → List ((a : α) × δ a)} (hfg : ∀ {l : AssocList α β}, (f l).toList.Perm (g l.toList)) (hg : ∀ {l l' : List ((a : α) × β a)}, (g (l ++ l')).Perm (g l ++ g l')) :

          This is the general theorem to show that mapping operations (like map and filter) are correct.

          IsHashSelf #

          theorem Std.DHashMap.Internal.IsHashSelf.uset {α : Type u} {β : α → Type v} [BEq α] [Hashable α] {m : Array (AssocList α β)} {i : USize} {h : i.toNat < m.size} {d : AssocList α β} (hd : List.HashesTo m[i].toList i.toNat m.size → List.HashesTo d.toList i.toNat m.size) (hm : IsHashSelf m) :
          IsHashSelf (m.uset i d h)
          theorem Std.DHashMap.Internal.IsHashSelf.updateBucket {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [PartialEquivBEq α] [LawfulHashable α] {m : Array (AssocList α β)} {h : 0 < m.size} {a : α} {f : AssocList α β → AssocList α β} (hf : ∀ (l : AssocList α β) (p : (a : α) × β a), p ∈ (f l).toList → Internal.List.containsKey p.fst l.toList = true ∨ hash p.fst = hash a) (hm : IsHashSelf m) :

          This is the general theorem to show that modification operations preserve well-formedness of buckets.

          theorem Std.DHashMap.Internal.IsHashSelf.updateAllBuckets {α : Type u} {β : α → Type v} {δ : α → Type w} [BEq α] [Hashable α] [LawfulHashable α] {m : Array (AssocList α β)} {f : AssocList α β → AssocList α δ} (hf : ∀ (l : AssocList α β) (p : (a : α) × δ a), p ∈ (f l).toList → Internal.List.containsKey p.fst l.toList = true) (hm : IsHashSelf m) :

          Definition of model functions #

          def Std.DHashMap.Internal.Raw₀.replaceₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
          Raw₀ α β

          Internal implementation detail of the hash map

          Instances For
            def Std.DHashMap.Internal.Raw₀.consₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
            Raw₀ α β

            Internal implementation detail of the hash map

            Instances For
              def Std.DHashMap.Internal.Raw₀.get?ₘ {α : Type u} {β : α → Type v} [BEq α] [LawfulBEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
              Option (β a)

              Internal implementation detail of the hash map

              Instances For
                def Std.DHashMap.Internal.Raw₀.getKey?ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :

                Internal implementation detail of the hash map

                Instances For
                  def Std.DHashMap.Internal.Raw₀.containsₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :

                  Internal implementation detail of the hash map

                  Instances For
                    def Std.DHashMap.Internal.Raw₀.getₘ {α : Type u} {β : α → Type v} [BEq α] [LawfulBEq α] [Hashable α] (m : Raw₀ α β) (a : α) (h : m.containsₘ a = true) :
                    β a

                    Internal implementation detail of the hash map

                    Instances For
                      def Std.DHashMap.Internal.Raw₀.getEntryₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (h : m.containsₘ a = true) :
                      (a : α) × β a

                      Internal implementation detail of the hash map

                      Instances For
                        def Std.DHashMap.Internal.Raw₀.getEntry?ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
                        Option ((a : α) × β a)

                        Internal implementation detail of the hash map

                        Instances For
                          def Std.DHashMap.Internal.Raw₀.getEntryDₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (fallback : (a : α) × β a) :
                          (a : α) × β a

                          Internal implementation detail of the hash map

                          Instances For
                            def Std.DHashMap.Internal.Raw₀.getEntry!ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [Inhabited ((a : α) × β a)] (m : Raw₀ α β) (a : α) :
                            (a : α) × β a

                            Internal implementation detail of the hash map

                            Instances For
                              def Std.DHashMap.Internal.Raw₀.getDₘ {α : Type u} {β : α → Type v} [BEq α] [LawfulBEq α] [Hashable α] (m : Raw₀ α β) (a : α) (fallback : β a) :
                              β a

                              Internal implementation detail of the hash map

                              Instances For
                                def Std.DHashMap.Internal.Raw₀.get!ₘ {α : Type u} {β : α → Type v} [BEq α] [LawfulBEq α] [Hashable α] (m : Raw₀ α β) (a : α) [Inhabited (β a)] :
                                β a

                                Internal implementation detail of the hash map

                                Instances For
                                  def Std.DHashMap.Internal.Raw₀.getKeyₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (h : m.containsₘ a = true) :
                                  α

                                  Internal implementation detail of the hash map

                                  Instances For
                                    def Std.DHashMap.Internal.Raw₀.getKeyDₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a fallback : α) :
                                    α

                                    Internal implementation detail of the hash map

                                    Instances For
                                      def Std.DHashMap.Internal.Raw₀.getKey!ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [Inhabited α] (m : Raw₀ α β) (a : α) :
                                      α

                                      Internal implementation detail of the hash map

                                      Instances For
                                        def Std.DHashMap.Internal.Raw₀.insertₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
                                        Raw₀ α β

                                        Internal implementation detail of the hash map

                                        Instances For
                                          def Std.DHashMap.Internal.Raw₀.insertIfNewₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
                                          Raw₀ α β

                                          Internal implementation detail of the hash map

                                          Instances For
                                            def Std.DHashMap.Internal.Raw₀.eraseₘaux {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
                                            Raw₀ α β

                                            Internal implementation detail of the hash map

                                            Instances For
                                              def Std.DHashMap.Internal.Raw₀.eraseₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
                                              Raw₀ α β

                                              Internal implementation detail of the hash map

                                              Instances For
                                                def Std.DHashMap.Internal.Raw₀.alterₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [LawfulBEq α] (m : Raw₀ α β) (a : α) (f : Option (β a) → Option (β a)) :
                                                Raw₀ α β

                                                Internal implementation detail of the hash map

                                                Instances For
                                                  def Std.DHashMap.Internal.Raw₀.modifyₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [LawfulBEq α] (m : Raw₀ α β) (a : α) (f : β a → β a) :
                                                  Raw₀ α β

                                                  Internal implementation detail of the hash map

                                                  Instances For
                                                    def Std.DHashMap.Internal.Raw₀.Const.alterₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) (f : Option β → Option β) :
                                                    Raw₀ α fun (x : α) => β

                                                    Internal implementation detail of the hash map

                                                    Instances For
                                                      def Std.DHashMap.Internal.Raw₀.Const.modifyₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) (f : β → β) :
                                                      Raw₀ α fun (x : α) => β

                                                      Internal implementation detail of the hash map

                                                      Instances For
                                                        def Std.DHashMap.Internal.Raw₀.filterMapₘ {α : Type u} {β : α → Type v} {δ : α → Type w} (m : Raw₀ α β) (f : (a : α) → β a → Option (δ a)) :
                                                        Raw₀ α δ

                                                        Internal implementation detail of the hash map

                                                        Instances For
                                                          def Std.DHashMap.Internal.Raw₀.mapₘ {α : Type u} {β : α → Type v} {δ : α → Type w} (m : Raw₀ α β) (f : (a : α) → β a → δ a) :
                                                          Raw₀ α δ

                                                          Internal implementation detail of the hash map

                                                          Instances For
                                                            def Std.DHashMap.Internal.Raw₀.filterₘ {α : Type u} {β : α → Type v} (m : Raw₀ α β) (f : (a : α) → β a → Bool) :
                                                            Raw₀ α β

                                                            Internal implementation detail of the hash map

                                                            Instances For
                                                              def Std.DHashMap.Internal.Raw₀.insertListₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (l : List ((a : α) × β a)) :
                                                              Raw₀ α β

                                                              Internal implementation detail of the hash map

                                                              Instances For
                                                                def Std.DHashMap.Internal.Raw₀.eraseListₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (l : List α) :
                                                                Raw₀ α β

                                                                Internal implementation detail of the hash map

                                                                Instances For
                                                                  def Std.DHashMap.Internal.Raw₀.diffₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m₁ m₂ : Raw₀ α β) :
                                                                  Raw₀ α β

                                                                  Internal implementation detail of the hash map

                                                                  Instances For
                                                                    def Std.DHashMap.Internal.Raw₀.insertListIfNewₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (l : List ((a : α) × β a)) :
                                                                    Raw₀ α β

                                                                    Internal implementation detail of the hash map

                                                                    Instances For
                                                                      def Std.DHashMap.Internal.Raw₀.unionₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m₁ m₂ : Raw₀ α β) :
                                                                      Raw₀ α β

                                                                      Internal implementation detail of the hash map

                                                                      Instances For
                                                                        def Std.DHashMap.Internal.Raw₀.interSmallerFnₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m sofar : Raw₀ α β) (k : α) :
                                                                        Raw₀ α β

                                                                        Internal implementation detail of the hash map

                                                                        Instances For
                                                                          def Std.DHashMap.Internal.Raw₀.Const.get?ₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) :

                                                                          Internal implementation detail of the hash map

                                                                          Instances For
                                                                            def Std.DHashMap.Internal.Raw₀.Const.getₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) (h : m.containsₘ a = true) :
                                                                            β

                                                                            Internal implementation detail of the hash map

                                                                            Instances For
                                                                              def Std.DHashMap.Internal.Raw₀.Const.getDₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) (fallback : β) :
                                                                              β

                                                                              Internal implementation detail of the hash map

                                                                              Instances For
                                                                                def Std.DHashMap.Internal.Raw₀.Const.get!ₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] [Inhabited β] (m : Raw₀ α fun (x : α) => β) (a : α) :
                                                                                β

                                                                                Internal implementation detail of the hash map

                                                                                Instances For
                                                                                  def Std.DHashMap.Internal.Raw₀.Const.insertListₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (l : List (α × β)) :
                                                                                  Raw₀ α fun (x : α) => β

                                                                                  Internal implementation detail of the hash map

                                                                                  Instances For
                                                                                    def Std.DHashMap.Internal.Raw₀.Const.insertListIfNewUnitₘ {α : Type u} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => Unit) (l : List α) :
                                                                                    Raw₀ α fun (x : α) => Unit

                                                                                    Internal implementation detail of the hash map

                                                                                    Instances For

                                                                                      Equivalence between model functions and real implementations #

                                                                                      theorem Std.DHashMap.Internal.Raw₀.reinsertAux_eq {α : Type u} {β : α → Type v} [Hashable α] (data : { d : Array (AssocList α β) // 0 < d.size }) (a : α) (b : β a) :
                                                                                      (reinsertAux hash data a b).val = updateBucket data.val ⋯ a fun (l : AssocList α β) => AssocList.cons a b l
                                                                                      theorem Std.DHashMap.Internal.Raw₀.get?_eq_get?ₘ {α : Type u} {β : α → Type v} [BEq α] [LawfulBEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
                                                                                      m.get? a = m.get?ₘ a
                                                                                      theorem Std.DHashMap.Internal.Raw₀.get_eq_getₘ {α : Type u} {β : α → Type v} [BEq α] [LawfulBEq α] [Hashable α] (m : Raw₀ α β) (a : α) (h : m.contains a = true) :
                                                                                      m.get a h = m.getₘ a h
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getEntry_eq_getEntryₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (h : m.contains a = true) :
                                                                                      m.getEntry a h = m.getEntryₘ a h
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getEntry?_eq_getEntry?ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getEntryD_eq_getEntryDₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (fallback : (a : α) × β a) :
                                                                                      m.getEntryD a fallback = m.getEntryDₘ a fallback
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getEntry!_eq_getEntry!ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [Inhabited ((a : α) × β a)] (m : Raw₀ α β) (a : α) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getD_eq_getDₘ {α : Type u} {β : α → Type v} [BEq α] [LawfulBEq α] [Hashable α] (m : Raw₀ α β) (a : α) (fallback : β a) :
                                                                                      m.getD a fallback = m.getDₘ a fallback
                                                                                      theorem Std.DHashMap.Internal.Raw₀.get!_eq_get!ₘ {α : Type u} {β : α → Type v} [BEq α] [LawfulBEq α] [Hashable α] (m : Raw₀ α β) (a : α) [Inhabited (β a)] :
                                                                                      m.get! a = m.get!ₘ a
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getKey?_eq_getKey?ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getKey_eq_getKeyₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (h : m.contains a = true) :
                                                                                      m.getKey a h = m.getKeyₘ a h
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getKeyD_eq_getKeyDₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a fallback : α) :
                                                                                      m.getKeyD a fallback = m.getKeyDₘ a fallback
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getKey!_eq_getKey!ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [Inhabited α] (m : Raw₀ α β) (a : α) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.contains_eq_containsₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.insert_eq_insertₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
                                                                                      m.insert a b = m.insertₘ a b
                                                                                      theorem Std.DHashMap.Internal.Raw₀.alter_eq_alterₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [LawfulBEq α] (m : Raw₀ α β) (a : α) (f : Option (β a) → Option (β a)) :
                                                                                      m.alter a f = m.alterₘ a f
                                                                                      theorem Std.DHashMap.Internal.Raw₀.modify_eq_alter {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [LawfulBEq α] (m : Raw₀ α β) (a : α) (f : β a → β a) :
                                                                                      m.modify a f = m.alter a fun (x : Option (β a)) => Option.map f x
                                                                                      theorem Std.DHashMap.Internal.Raw₀.modify_eq_modifyₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [LawfulBEq α] (m : Raw₀ α β) (a : α) (f : β a → β a) :
                                                                                      m.modify a f = m.modifyₘ a f
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.alter_eq_alterₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] [EquivBEq α] (m : Raw₀ α fun (x : α) => β) (a : α) (f : Option β → Option β) :
                                                                                      alter m a f = alterₘ m a f
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.modify_eq_alter {α : Type u} {β : Type v} [BEq α] [Hashable α] [EquivBEq α] (m : Raw₀ α fun (x : α) => β) (a : α) (f : β → β) :
                                                                                      modify m a f = alter m a fun (x : Option β) => Option.map f x
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.modify_eq_modifyₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] [EquivBEq α] (m : Raw₀ α fun (x : α) => β) (a : α) (f : β → β) :
                                                                                      modify m a f = modifyₘ m a f
                                                                                      theorem Std.DHashMap.Internal.Raw₀.containsThenInsert_eq_insertₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.containsThenInsert_eq_containsₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.containsThenInsertIfNew_eq_insertIfNewₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.containsThenInsertIfNew_eq_containsₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.insertIfNew_eq_insertIfNewₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) (b : β a) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getThenInsertIfNew?_eq_insertIfNewₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [LawfulBEq α] (m : Raw₀ α β) (a : α) (b : β a) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.getThenInsertIfNew?_eq_get?ₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] [LawfulBEq α] (m : Raw₀ α β) (a : α) (b : β a) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.erase_eq_eraseₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (a : α) :
                                                                                      m.erase a = m.eraseₘ a
                                                                                      theorem Std.DHashMap.Internal.Raw₀.filterMap_eq_filterMapₘ {α : Type u} {β : α → Type v} {δ : α → Type w} (m : Raw₀ α β) (f : (a : α) → β a → Option (δ a)) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.map_eq_mapₘ {α : Type u} {β : α → Type v} {δ : α → Type w} (m : Raw₀ α β) (f : (a : α) → β a → δ a) :
                                                                                      map f m = m.mapₘ f
                                                                                      theorem Std.DHashMap.Internal.Raw₀.filter_eq_filterₘ {α : Type u} {β : α → Type v} (m : Raw₀ α β) (f : (a : α) → β a → Bool) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.insertMany_eq_insertListₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (l : List ((a : α) × β a)) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.eraseManyEntries_eq_eraseListₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (l : List ((a : α) × β a)) :
                                                                                      (m.eraseManyEntries l).val = m.eraseListₘ (List.map (fun (x : (a : α) × β a) => x.fst) l)
                                                                                      theorem Std.DHashMap.Internal.Raw₀.insertManyIfNew_eq_insertListIfNewₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Raw₀ α β) (l : List ((a : α) × β a)) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.interSmallerFn_eq_interSmallerFnₘ {α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m sofar : Raw₀ α β) (k : α) :
                                                                                      m.interSmallerFn sofar k = m.interSmallerFnₘ sofar k
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.get?_eq_get?ₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) :
                                                                                      get? m a = get?ₘ m a
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.get_eq_getₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) (h : m.contains a = true) :
                                                                                      get m a h = getₘ m a h
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.getD_eq_getDₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) (fallback : β) :
                                                                                      getD m a fallback = getDₘ m a fallback
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.get!_eq_get!ₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] [Inhabited β] (m : Raw₀ α fun (x : α) => β) (a : α) :
                                                                                      get! m a = get!ₘ m a
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.getThenInsertIfNew?_eq_insertIfNewₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) (b : β) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.getThenInsertIfNew?_eq_get?ₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (a : α) (b : β) :
                                                                                      theorem Std.DHashMap.Internal.Raw₀.Const.insertMany_eq_insertListₘ {α : Type u} {β : Type v} [BEq α] [Hashable α] (m : Raw₀ α fun (x : α) => β) (l : List (α × β)) :