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 #

@[implicit_reducible]
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

Equations
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

    Equations
    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

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

        Internal implementation detail of the hash map

        Equations
        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

          Equations
          • One or more equations did not get rendered due to their size.
          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

            Equations
            • One or more equations did not get rendered due to their size.
            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

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

                Internal implementation detail of the hash map

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

                  Internal implementation detail of the hash map

                  Equations
                  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

                    Equations
                    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

                      Equations
                      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

                        Equations
                        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

                          Equations
                          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

                            Equations
                            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

                              Equations
                              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

                                Equations
                                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

                                  Equations
                                  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

                                    Equations
                                    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

                                      Equations
                                      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

                                        Equations
                                        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

                                          Equations
                                          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

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            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

                                              Equations
                                              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

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                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

                                                  Equations
                                                  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

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    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

                                                      Equations
                                                      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

                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        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

                                                          Equations
                                                          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

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            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

                                                              Equations
                                                              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

                                                                Equations
                                                                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

                                                                  Equations
                                                                  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

                                                                    Equations
                                                                    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

                                                                      Equations
                                                                      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

                                                                        Equations
                                                                        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

                                                                          Equations
                                                                          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

                                                                            Equations
                                                                            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

                                                                              Equations
                                                                              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

                                                                                Equations
                                                                                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

                                                                                  Equations
                                                                                  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 (α × β)) :