Documentation

Mathlib.CategoryTheory.Limits.Shapes.PiProd

A product as a binary product #

We write a product indexed by I as a binary product of the products indexed by a subset of I and its complement.

noncomputable def CategoryTheory.Limits.Pi.binaryFanOfProp {C : Type u_1} {I : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] (X : IC) (P : IProp) [CategoryTheory.Limits.HasProduct X] [CategoryTheory.Limits.HasProduct fun (i : { x : I // P x }) => X i] [CategoryTheory.Limits.HasProduct fun (i : { x : I // ¬P x }) => X i] :
CategoryTheory.Limits.BinaryFan (∏ᶜ fun (i : { x : I // P x }) => X i) (∏ᶜ fun (i : { x : I // ¬P x }) => X i)

The projection maps of a product to the products indexed by a subset and its complement, as a binary fan.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    noncomputable def CategoryTheory.Limits.Pi.binaryFanOfPropIsLimit {C : Type u_1} {I : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] (X : IC) (P : IProp) [CategoryTheory.Limits.HasProduct X] [CategoryTheory.Limits.HasProduct fun (i : { x : I // P x }) => X i] [CategoryTheory.Limits.HasProduct fun (i : { x : I // ¬P x }) => X i] [(i : I) → Decidable (P i)] :

    A product indexed by I is a binary product of the products indexed by a subset of I and its complement.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem CategoryTheory.Limits.hasBinaryProduct_of_products {C : Type u_1} {I : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] {X : IC} (P : IProp) [CategoryTheory.Limits.HasProduct X] [CategoryTheory.Limits.HasProduct fun (i : { x : I // P x }) => X i] [CategoryTheory.Limits.HasProduct fun (i : { x : I // ¬P x }) => X i] :
      CategoryTheory.Limits.HasBinaryProduct (∏ᶜ fun (i : { x : I // P x }) => X i) (∏ᶜ fun (i : { x : I // ¬P x }) => X i)
      theorem CategoryTheory.Limits.Pi.map_eq_prod_map {C : Type u_1} {I : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] {X Y : IC} (f : (i : I) → X i Y i) (P : IProp) [CategoryTheory.Limits.HasProduct X] [CategoryTheory.Limits.HasProduct Y] [CategoryTheory.Limits.HasProduct fun (i : { x : I // P x }) => X i] [CategoryTheory.Limits.HasProduct fun (i : { x : I // ¬P x }) => X i] [CategoryTheory.Limits.HasProduct fun (i : { x : I // P x }) => Y i] [CategoryTheory.Limits.HasProduct fun (i : { x : I // ¬P x }) => Y i] [(i : I) → Decidable (P i)] :
      CategoryTheory.Limits.Pi.map f = CategoryTheory.CategoryStruct.comp ((CategoryTheory.Limits.Pi.binaryFanOfPropIsLimit X P).conePointUniqueUpToIso (CategoryTheory.Limits.prodIsProd (∏ᶜ fun (i : { x : I // P x }) => X i) (∏ᶜ fun (i : { x : I // ¬P x }) => X i))).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.prod.map (CategoryTheory.Limits.Pi.map fun (i : { x : I // P x }) => f i) (CategoryTheory.Limits.Pi.map fun (i : { x : I // ¬P x }) => f i)) ((CategoryTheory.Limits.Pi.binaryFanOfPropIsLimit Y P).conePointUniqueUpToIso (CategoryTheory.Limits.prodIsProd (∏ᶜ fun (i : { x : I // P x }) => Y i) (∏ᶜ fun (i : { x : I // ¬P x }) => Y i))).inv)