Documentation

Foundation.Vorspiel.Multiset

def Multiset.atom {α : Type u_1} (a : α) :

Function to avoid reducing {a} + s to a ::ₘ s

Equations
Instances For

    ⦃x, y, z, ...⦄ notation for kpair

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem Multiset.atom_eq_singleton {α : Type u_1} (a : α) :
        theorem Multiset.add_atom_eq_cons {α : Type u_1} (a : α) (s : Multiset α) :
        s + ⦃a⦄ = a ::ₘ s
        @[simp]
        theorem Multiset.mem_atom_iff {α : Type u_1} {a b : α} :
        a ∈ ⦃b⦄ ↔ a = b
        @[simp]
        theorem Multiset.atom_le_iff {α : Type u_1} {a : α} {s : Multiset α} :
        ⦃a⦄ ≤ s ↔ a ∈ s
        @[simp]
        theorem Multiset.atom_subset_iff {α : Type u_1} {a : α} {s : Multiset α} :
        ⦃a⦄ ⊆ s ↔ a ∈ s
        @[simp]
        theorem Multiset.map_atom {α : Type u_1} {β : Type u_2} (f : α → β) (a : α) :
        @[simp]
        theorem Multiset.forall_mem_add {α : Type u_1} {p : α → Prop} {s t : Multiset α} :
        (∀ (a : α), a ∈ s + t → p a) ↔ (∀ (a : α), a ∈ s → p a) ∧ ∀ (a : α), a ∈ t → p a

        Universal membership over a sum splits into the two summands. This is a routine property of multiset membership.

        @[simp]
        theorem Multiset.forall_mem_atom {α : Type u_1} {p : α → Prop} {a : α} :
        (∀ (b : α), b ∈ ⦃a⦄ → p b) ↔ p a

        Universal membership over an atom reduces to its unique member. This is a routine property of multiset membership.

        theorem Multiset.add_map_subset_map_filter_add_atom {α : Type u_1} {β : Type u_2} [DecidableEq α] (s : Multiset α) (t : Multiset β) (f : α → β) (a : α) :
        t + map f s ⊆ map f (filter (fun (x : α) => x ≠ a) s) + ⦃f a⦄ + t

        After filtering out a, adjoining f a recovers every mapped member. This is a routine technical property of multiset membership.

        theorem Multiset.map_subset_iff {α : Type u_1} {β : Type u_2} {s₁ s₂ : Multiset α} (f : α → β) (hf : Function.Injective f) :
        map f s₁ ⊆ map f s₂ ↔ s₁ ⊆ s₂
        inductive Multiset.Traversal {α : Type u_1} :
        Multiset α → Type u_1
        Instances For
          def Multiset.Traversal.cast {α : Type u_1} {s t : Multiset α} (h : s = t) :
          Equations
          Instances For
            def Multiset.Traversal.add {α✝ : Type u_1} {s₁ s₂ : Multiset α✝} (t₁ : s₁.Traversal) (t₂ : s₂.Traversal) :
            (s₁ + s₂).Traversal
            Equations
            Instances For
              theorem Multiset.Traversal.toList_cast {α : Type u_1} {s t : Multiset α} (h : s = t) (u : s.Traversal) :
              @[simp]
              theorem Multiset.Traversal.coe_toList {α : Type u_1} {s : Multiset α} (t : s.Traversal) :
              ↑t.toList = s
              theorem Multiset.Traversal.toList_ofList {α : Type u_1} (l : List α) :
              theorem Multiset.Traversal.ofList_toList {α : Type u_1} {s : Multiset α} (t : s.Traversal) :
              cast ⋯ (ofList t.toList) = t
              def Multiset.Traversal.equiv {α : Type u_1} {s : Multiset α} :
              s.Traversal ≃ { l : List α // ↑l = s }
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Multiset.Traversal.map {α : Type u_1} {β : Type u_2} (f : α → β) {s : Multiset α} (t : s.Traversal) :

                Construct a traversal after applying a function to every element.

                Equations
                Instances For
                  def Multiset.Traversal.filter {α : Type u_1} (p : α → Prop) [DecidablePred p] {s : Multiset α} (t : s.Traversal) :

                  Construct a traversal of the elements satisfying a decidable predicate.

                  Equations
                  Instances For
                    def Multiset.Traversal.erase {α : Type u_1} [DecidableEq α] (a : α) {s : Multiset α} (t : s.Traversal) :

                    Construct a traversal after removing one occurrence of an element.

                    Equations
                    Instances For
                      def Multiset.Traversal.remove {α : Type u_1} [DecidableEq α] {a : α} {s : Multiset α} (t : (s + ⦃a⦄).Traversal) :

                      Remove the distinguished occurrence from a traversal of an adjoined atom.

                      Equations
                      Instances For
                        def Multiset.Traversal.getPreimage {β : Type u_1} {α : Type u_2} [DecidableEq β] {f : α → β} {s : Multiset α} (t : s.Traversal) {b : β} (h : b ∈ Multiset.map f s) :
                        { a : α // a ∈ s ∧ f a = b }

                        Constructively extract a preimage from a mapped traversal.

                        Equations
                        Instances For
                          @[instance_reducible]
                          noncomputable instance Multiset.Traversal.inhabited {α : Type u_1} {s : Multiset α} :
                          Equations