Cartesian product types
Content created by Fredrik Bakke, Egbert Rijke, Jonathan Prieto-Cubides, Julian KG, fernabnor and louismntnu.
Created on 2022-02-04.
Last modified on 2024-03-02.
module foundation-core.cartesian-product-types where
Definitions
Cartesian products of types are defined as dependent pair types, using a constant type family.
The cartesian product type
product : {l1 l2 : Level} (A : UU l1) (B : UU l2) → UU (l1 ⊔ l2) product A B = Σ A (λ _ → B) pair' : {l1 l2 : Level} {A : UU l1} {B : UU l2} → A → B → product A B pair' = pair infixr 15 _×_ _×_ : {l1 l2 : Level} (A : UU l1) (B : UU l2) → UU (l1 ⊔ l2) _×_ = product
The induction principle for the cartesian product type
ind-product : {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : A × B → UU l3} → ((x : A) (y : B) → C (x , y)) → (t : A × B) → C t ind-product = ind-Σ
The recursion principle for the cartesian product type
rec-product : {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} → (A → B → C) → (A × B) → C rec-product = ind-product
Recent changes
- 2024-03-02. Fredrik Bakke. Factor out standard pullbacks (#1042).
- 2024-02-06. Fredrik Bakke. Rename
(co)prod
to(co)product
(#1017). - 2023-09-10. Fredrik Bakke. Define precedence levels and associativities for all binary operators (#712).
- 2023-06-25. Fredrik Bakke, louismntnu, fernabnor, Egbert Rijke and Julian KG. Posets are categories, and refactor binary relations (#665).
- 2023-06-10. Egbert Rijke. cleaning up transport and dependent identifications files (#650).