Documentation

Mathlib.Algebra.FreeMonoid.Count

List.count as a bundled homomorphism #

In this file we define FreeMonoid.countP, FreeMonoid.count, FreeAddMonoid.countP, and FreeAddMonoid.count. These are List.countP and List.count bundled as multiplicative and additive homomorphisms from FreeMonoid and FreeAddMonoid.

We do not use to_additive too much because it can't map Multiplicative to .

def FreeMonoid.countP' {α : Type u_1} (p : αProp) [DecidablePred p] (l : FreeMonoid α) :

List.countP lifted to free monoids

Equations
    Instances For
      def FreeAddMonoid.countP' {α : Type u_1} (p : αProp) [DecidablePred p] (l : FreeAddMonoid α) :

      List.countP lifted to free additive monoids

      Equations
        Instances For
          theorem FreeMonoid.countP'_one {α : Type u_1} (p : αProp) [DecidablePred p] :
          countP' p 1 = 0
          theorem FreeAddMonoid.countP'_zero {α : Type u_1} (p : αProp) [DecidablePred p] :
          countP' p 0 = 0
          theorem FreeMonoid.countP'_mul {α : Type u_1} (p : αProp) [DecidablePred p] (l₁ l₂ : FreeMonoid α) :
          countP' p (l₁ * l₂) = countP' p l₁ + countP' p l₂
          theorem FreeAddMonoid.countP'_add {α : Type u_1} (p : αProp) [DecidablePred p] (l₁ l₂ : FreeAddMonoid α) :
          countP' p (l₁ + l₂) = countP' p l₁ + countP' p l₂

          List.countP as a bundled multiplicative monoid homomorphism.

          Equations
            Instances For
              theorem FreeMonoid.countP_apply {α : Type u_1} (p : αProp) [DecidablePred p] (l : FreeMonoid α) :
              (countP p) l = Multiplicative.ofAdd (List.countP (fun (b : α) => decide (p b)) (toList l))
              theorem FreeMonoid.countP_of {α : Type u_1} (p : αProp) [DecidablePred p] (x : α) :

              List.count as a bundled additive monoid homomorphism.

              Equations
                Instances For
                  theorem FreeMonoid.count_of {α : Type u_1} [DecidableEq α] (x y : α) :
                  def FreeAddMonoid.countP {α : Type u_1} (p : αProp) [DecidablePred p] :

                  List.countP as a bundled additive monoid homomorphism.

                  Equations
                    Instances For
                      theorem FreeAddMonoid.countP_apply {α : Type u_1} (p : αProp) [DecidablePred p] (l : FreeAddMonoid α) :
                      (countP p) l = List.countP (fun (b : α) => decide (p b)) (toList l)
                      theorem FreeAddMonoid.countP_of {α : Type u_1} (p : αProp) [DecidablePred p] (x : α) :
                      (countP p) (of x) = if p x then 1 else 0
                      def FreeAddMonoid.count {α : Type u_1} [DecidableEq α] (x : α) :

                      List.count as a bundled additive monoid homomorphism.

                      Equations
                        Instances For
                          theorem FreeAddMonoid.count_of {α : Type u_1} [DecidableEq α] (x y : α) :
                          (count x) (of y) = Pi.single x 1 y
                          theorem FreeAddMonoid.count_apply {α : Type u_1} [DecidableEq α] (x : α) (l : FreeAddMonoid α) :
                          (count x) l = List.count x (toList l)