Documentation

Mathlib.RingTheory.Coalgebra.CoassocSimps

Tactic to reassociate comultiplication in a coalgebra #

coassoc_simps is a simp set useful to prove tautologies on coalgebras.

The general algorithm it follows is to push the associators TensorProduct.assoc and commutators TensorProduct.comm inwards (to the right) until they cancel against co-multiplications.

The simp set makes the following choice of normal form

Notes #

theorem CoassocSimps.TensorProduct.map_comp_assoc {R : Type u_1} {M : Type u_3} {N : Type u_4} {P : Type u_5} {M' : Type u_6} {N' : Type u_7} {P' : Type u_8} {M₁ : Type u_11} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid P] [Module R P] [AddCommMonoid M'] [Module R M'] [AddCommMonoid N'] [Module R N'] [AddCommMonoid P'] [Module R P'] [AddCommMonoid M₁] [Module R M₁] (f : M →ₗ[R] N) (g : N →ₗ[R] P) (f' : M' →ₗ[R] N') (g' : N' →ₗ[R] P') (φ : M₁ →ₗ[R] TensorProduct R M M') :
theorem CoassocSimps.TensorProduct.map_map_comp_assoc_eq_assoc {R : Type u_1} {M : Type u_3} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₁ : Type u_14} {N₂ : Type u_15} {N₃ : Type u_16} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₁] [AddCommMonoid N₂] [AddCommMonoid N₃] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₁] [Module R N₂] [Module R N₃] (f₁ : M₁ →ₗ[R] N₁) (f₂ : M₂ →ₗ[R] N₂) (f₃ : M₃ →ₗ[R] N₃) (f : M →ₗ[R] TensorProduct R (TensorProduct R M₁ M₂) M₃) :
TensorProduct.map f₁ (TensorProduct.map f₂ f₃) ∘ₗ (TensorProduct.assoc R M₁ M₂ M₃) ∘ₗ f = (TensorProduct.assoc R N₁ N₂ N₃) ∘ₗ TensorProduct.map (TensorProduct.map f₁ f₂) f₃ ∘ₗ f
theorem CoassocSimps.TensorProduct.map_map_comp_assoc_symm_eq_assoc {R : Type u_1} {M : Type u_3} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₁ : Type u_14} {N₂ : Type u_15} {N₃ : Type u_16} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₁] [AddCommMonoid N₂] [AddCommMonoid N₃] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₁] [Module R N₂] [Module R N₃] (f₁ : M₁ →ₗ[R] N₁) (f₂ : M₂ →ₗ[R] N₂) (f₃ : M₃ →ₗ[R] N₃) (f : M →ₗ[R] TensorProduct R M₁ (TensorProduct R M₂ M₃)) :
TensorProduct.map (TensorProduct.map f₁ f₂) f₃ ∘ₗ (TensorProduct.assoc R M₁ M₂ M₃).symm ∘ₗ f = (TensorProduct.assoc R N₁ N₂ N₃).symm ∘ₗ TensorProduct.map f₁ (TensorProduct.map f₂ f₃) ∘ₗ f
theorem CoassocSimps.assoc_comp_map_map_comp {R : Type u_1} {M : Type u_3} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₁ : Type u_14} {N₂ : Type u_15} {N₃ : Type u_16} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₁] [AddCommMonoid N₂] [AddCommMonoid N₃] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₁] [Module R N₂] [Module R N₃] (f₁ : M₁ →ₗ[R] N₁) (f₂ : M₂ →ₗ[R] N₂) (f₃ : M₃ →ₗ[R] N₃) (f₁₂ : M →ₗ[R] TensorProduct R M₁ M₂) :
theorem CoassocSimps.assoc_comp_map_map_comp_assoc {R : Type u_1} {M : Type u_3} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₁ : Type u_14} {N₂ : Type u_15} {N₃ : Type u_16} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₁] [AddCommMonoid N₂] [AddCommMonoid N₃] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₁] [Module R N₂] [Module R N₃] (f₁ : M₁ →ₗ[R] N₁) (f₂ : M₂ →ₗ[R] N₂) (f₃ : M₃ →ₗ[R] N₃) (f₁₂ : M →ₗ[R] TensorProduct R M₁ M₂) (f : M →ₗ[R] TensorProduct R M M₃) :
theorem CoassocSimps.assoc_comp_map {R : Type u_1} {M : Type u_3} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₃ : Type u_16} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₃] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₃] (f₃ : M₃ →ₗ[R] N₃) (f₁₂ : M →ₗ[R] TensorProduct R M₁ M₂) :

Simproc version of assoc_comp_map that only fires when f₃ ≠ id.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem CoassocSimps.assoc_comp_map_assoc {R : Type u_1} {M : Type u_3} {P : Type u_5} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₃ : Type u_16} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid P] [Module R P] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₃] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₃] (f₃ : M₃ →ₗ[R] N₃) (f₁₂ : M →ₗ[R] TensorProduct R M₁ M₂) (f : P →ₗ[R] TensorProduct R M M₃) :

    Simproc version of assoc_comp_map_assoc that only fires when f₃ ≠ id.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem CoassocSimps.assoc_symm_comp_map {R : Type u_1} {M : Type u_3} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₁ : Type u_14} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₁] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₁] (f₁ : M₁ →ₗ[R] N₁) (f₂₃ : M →ₗ[R] TensorProduct R M₂ M₃) :

      Simproc version of assoc_symm_comp_map that only fires when f₁ ≠ id.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem CoassocSimps.assoc_symm_comp_map_assoc {R : Type u_1} {M : Type u_3} {P : Type u_5} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₁ : Type u_14} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid P] [Module R P] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₁] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₁] (f₁ : M₁ →ₗ[R] N₁) (f₂₃ : M →ₗ[R] TensorProduct R M₂ M₃) (f : P →ₗ[R] TensorProduct R M₁ M) :

        Simproc version of assoc_symm_comp_map_assoc that only fires when f₁ ≠ id.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem CoassocSimps.assoc_symm_comp_map_map_comp {R : Type u_1} {M : Type u_3} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₁ : Type u_14} {N₂ : Type u_15} {N₃ : Type u_16} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₁] [AddCommMonoid N₂] [AddCommMonoid N₃] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₁] [Module R N₂] [Module R N₃] (f₁ : M₁ →ₗ[R] N₁) (f₂ : M₂ →ₗ[R] N₂) (f₃ : M₃ →ₗ[R] N₃) (f₂₃ : M →ₗ[R] TensorProduct R M₂ M₃) :
          theorem CoassocSimps.assoc_symm_comp_map_map_comp_assoc {R : Type u_1} {M : Type u_3} {N : Type u_4} {M₁ : Type u_11} {M₂ : Type u_12} {M₃ : Type u_13} {N₁ : Type u_14} {N₂ : Type u_15} {N₃ : Type u_16} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid M₁] [AddCommMonoid M₂] [AddCommMonoid M₃] [AddCommMonoid N₁] [AddCommMonoid N₂] [AddCommMonoid N₃] [Module R M₁] [Module R M₂] [Module R M₃] [Module R N₁] [Module R N₂] [Module R N₃] (f₁ : M₁ →ₗ[R] N₁) (f₂ : M₂ →ₗ[R] N₂) (f₃ : M₃ →ₗ[R] N₃) (f₂₃ : M →ₗ[R] TensorProduct R M₂ M₃) (f : N →ₗ[R] TensorProduct R M₁ M) :
          theorem CoassocSimps.lid_comp_map {R : Type u_1} {M : Type u_3} {N : Type u_4} {M' : Type u_6} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid M'] [Module R M'] (f : M →ₗ[R] R) (g : N →ₗ[R] M') :

          Simproc version of lid_comp_map that only fires when g ≠ id.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem CoassocSimps.lid_comp_map_assoc {R : Type u_1} {M : Type u_3} {N : Type u_4} {P : Type u_5} {M' : Type u_6} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid P] [Module R P] [AddCommMonoid M'] [Module R M'] (f : M →ₗ[R] R) (g : N →ₗ[R] M') (h : P →ₗ[R] TensorProduct R M N) :

            Simproc version of lid_comp_map_assoc that only fires when g ≠ id.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem CoassocSimps.rid_comp_map {R : Type u_1} {M : Type u_3} {N : Type u_4} {M' : Type u_6} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid M'] [Module R M'] (f : M →ₗ[R] M') (g : N →ₗ[R] R) :

              Simproc version of rid_comp_map that only fires when g ≠ id.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem CoassocSimps.rid_comp_map_assoc {R : Type u_1} {M : Type u_3} {N : Type u_4} {P : Type u_5} {M' : Type u_6} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid P] [Module R P] [AddCommMonoid M'] [Module R M'] (f : M →ₗ[R] M') (g : N →ₗ[R] R) (h : P →ₗ[R] TensorProduct R M N) :

                Simproc version of rid_comp_map_assoc that only fires when f ≠ id.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem CoassocSimps.symm_comp_lid_symm_assoc {R : Type u_1} {M : Type u_3} {M' : Type u_6} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M'] [Module R M'] (f : M →ₗ[R] M') :
                  theorem CoassocSimps.symm_comp_rid_symm_assoc {R : Type u_1} {M : Type u_3} {M' : Type u_6} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid M'] [Module R M'] (f : M →ₗ[R] M') :
                  theorem CoassocSimps.symm_comp_map {R : Type u_1} {M : Type u_3} {N : Type u_4} {M' : Type u_6} {N' : Type u_7} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid M'] [Module R M'] [AddCommMonoid N'] [Module R N'] (f : M →ₗ[R] M') (g : N →ₗ[R] N') :
                  theorem CoassocSimps.symm_comp_map_assoc {R : Type u_1} {M : Type u_3} {N : Type u_4} {P : Type u_5} {M' : Type u_6} {N' : Type u_7} [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [AddCommMonoid P] [Module R P] [AddCommMonoid M'] [Module R M'] [AddCommMonoid N'] [Module R N'] (f : M →ₗ[R] M') (g : N →ₗ[R] N') (h : P →ₗ[R] TensorProduct R M N) :