Built with Alectryon. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
(** * Dependent Product Category *)Require Import Category.Strict.Require Import Basics.Trunc.Set Implicit Arguments.Generalizable All Variables.LocalOpen Scope category_scope.LocalOpen Scope morphism_scope.(** ** Definition of [∀], or [∏], for categories *)Sectionpi.Context `{Funext}.VariableA : Type.VariableP : A -> PreCategory.
H: Funext A: Type P: A -> PreCategory
PreCategory
refine (@Build_PreCategory
(foralla : A, P a)
(funsd => foralla : A, morphism (P a) (s a) (d a))
(funx => funa => identity (x a))
(funsdd'm2m1 => funa => m2 a o m1 a)
_
_
_
_);
abstract (
repeat (intro || apply path_forall);
auto with morphism
).Defined.Endpi.LocalNotation"'forall' x .. y , P" := (forallx, .. (forally, P) ..) : type_scope.LocalNotation"'forall' x .. y , P" := (pi (funx => .. (pi (funy => P)) .. )) : category_scope.(** ** The product of strict categories is strict *)
H: Funext A: Type P: A -> PreCategory H0: foralla : A, IsStrictCategory (P a)
IsStrictCategory (foralla : A, P a)
H: Funext A: Type P: A -> PreCategory H0: foralla : A, IsStrictCategory (P a)
IsStrictCategory (foralla : A, P a)
typeclasses eauto.Qed.Local Set Warnings"-notation-overridden".ModuleExport CategoryPiNotations.Notation"'forall' x .. y , P" := (forallx, .. (forally, P) ..)%type : type_scope.Notation"'forall' x .. y , P" := (pi (funx => .. (pi (funy => P)) .. )) : category_scope.EndCategoryPiNotations.