Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.3. 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.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Import Morphisms.CategoryMorphismsNotations isomorphic_notations. Local Open Scope category. (** Given any signature [σ], there is a precategory of set algebras and homomorphisms for that signature. *)
H: Funext
σ: Signature

PreCategory
H: Funext
σ: Signature

PreCategory
apply (@Build_PreCategory (SetAlgebra σ) Homomorphism hom_id (@hom_compose σ)); [intros; by apply path_hset_homomorphism .. | exact _]. Defined. (** Category isomorphic implies algebra isomorphic. *)
H: Funext
σ: Signature
A, B: precategory_algebra σ

A <~=~> B -> A ≅ B
H: Funext
σ: Signature
A, B: precategory_algebra σ

A <~=~> B -> A ≅ B
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: morphism (precategory_algebra σ) A B
a: morphism (precategory_algebra σ) B A
b: (a o f)%morphism = 1%morphism
c: (f o a)%morphism = 1%morphism

A ≅ B
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: morphism (precategory_algebra σ) A B
a: morphism (precategory_algebra σ) B A
b: (a o f)%morphism = 1%morphism
c: (f o a)%morphism = 1%morphism

IsIsomorphism f
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: morphism (precategory_algebra σ) A B
a: morphism (precategory_algebra σ) B A
b: (a o f)%morphism = 1%morphism
c: (f o a)%morphism = 1%morphism
s: Sort σ

IsEquiv (f s)
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: morphism (precategory_algebra σ) A B
a: morphism (precategory_algebra σ) B A
b: (a o f)%morphism = 1%morphism
c: (f o a)%morphism = 1%morphism
s: Sort σ

(λ x : B s, f s (a s x)) == idmap
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: morphism (precategory_algebra σ) A B
a: morphism (precategory_algebra σ) B A
b: (a o f)%morphism = 1%morphism
c: (f o a)%morphism = 1%morphism
s: Sort σ
(λ x : A s, a s (f s x)) == idmap
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: morphism (precategory_algebra σ) A B
a: morphism (precategory_algebra σ) B A
b: (a o f)%morphism = 1%morphism
c: (f o a)%morphism = 1%morphism
s: Sort σ

(λ x : B s, f s (a s x)) == idmap
exact (apD10_homomorphism c s).
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: morphism (precategory_algebra σ) A B
a: morphism (precategory_algebra σ) B A
b: (a o f)%morphism = 1%morphism
c: (f o a)%morphism = 1%morphism
s: Sort σ

(λ x : A s, a s (f s x)) == idmap
exact (apD10_homomorphism b s). Defined. (** Algebra isomorphic implies category isomorphic. *)
H: Funext
σ: Signature
A, B: precategory_algebra σ

A ≅ B -> A <~=~> B
H: Funext
σ: Signature
A, B: precategory_algebra σ

A ≅ B -> A <~=~> B
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f

A <~=~> B
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B

A <~=~> B
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B

Morphisms.IsIsomorphism h
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B

(hom_inv h o h)%morphism = 1%morphism
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B
(h o hom_inv h)%morphism = 1%morphism
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B

(hom_inv h o h)%morphism = 1%morphism
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B

(hom_inv h o h)%morphism = 1%morphism
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B
s: Sort σ
x: A s

(hom_inv h o h)%morphism s x = 1%morphism s x
apply eissect.
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B

(h o hom_inv h)%morphism = 1%morphism
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B

(h o hom_inv h)%morphism = 1%morphism
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f
h:= {| def_hom := f; is_homomorphism_hom := F |}: Homomorphism A B
s: Sort σ
x: B s

(h o hom_inv h)%morphism s x = 1%morphism s x
apply eisretr. Defined. (** Category isomorphic and algebra isomorphic is equivalent. *)
H: Funext
σ: Signature
A, B: precategory_algebra σ

IsEquiv catiso_to_uaiso
H: Funext
σ: Signature
A, B: precategory_algebra σ

IsEquiv catiso_to_uaiso
H: Funext
σ: Signature
A, B: precategory_algebra σ

(λ x : A ≅ B, catiso_to_uaiso (uaiso_to_catiso x)) == idmap
H: Funext
σ: Signature
A, B: precategory_algebra σ
(λ x : A <~=~> B, uaiso_to_catiso (catiso_to_uaiso x)) == idmap
H: Funext
σ: Signature
A, B: precategory_algebra σ

(λ x : A ≅ B, catiso_to_uaiso (uaiso_to_catiso x)) == idmap
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: forall s : Sort σ, A s -> B s
F: IsHomomorphism f
G: IsIsomorphism f

catiso_to_uaiso (uaiso_to_catiso {| def_isomorphic := f; is_homomorphism_isomorphic := F; is_isomorphism_isomorphic := G |}) = {| def_isomorphic := f; is_homomorphism_isomorphic := F; is_isomorphism_isomorphic := G |}
by apply path_hset_isomorphic.
H: Funext
σ: Signature
A, B: precategory_algebra σ

(λ x : A <~=~> B, uaiso_to_catiso (catiso_to_uaiso x)) == idmap
H: Funext
σ: Signature
A, B: precategory_algebra σ
f: morphism (precategory_algebra σ) A B
F: Morphisms.IsIsomorphism f

uaiso_to_catiso (catiso_to_uaiso {| Morphisms.morphism_isomorphic := f; Morphisms.isisomorphism_isomorphic := F |}) = {| Morphisms.morphism_isomorphic := f; Morphisms.isisomorphism_isomorphic := F |}
by apply Morphisms.path_isomorphic. Defined. (** [Morphisms.idtoiso] factorizes as the composition of equivalences. *)
H: Funext
σ: Signature
A, B: precategory_algebra σ

Morphisms.idtoiso (precategory_algebra σ) (y:=B) = catiso_to_uaiso^-1 o isomorphic_id o (path_setalgebra A B)^-1
H: Funext
σ: Signature
A, B: precategory_algebra σ

Morphisms.idtoiso (precategory_algebra σ) (y:=B) = catiso_to_uaiso^-1 o isomorphic_id o (path_setalgebra A B)^-1
H: Funext
σ: Signature
A, B: precategory_algebra σ
p: A = B

Morphisms.idtoiso (precategory_algebra σ) p = catiso_to_uaiso^-1 (isomorphic_id ((path_setalgebra A B)^-1 p))
H: Funext
σ: Signature
A: precategory_algebra σ

Morphisms.idtoiso (precategory_algebra σ) 1 = catiso_to_uaiso^-1 (isomorphic_id ((path_setalgebra A A)^-1 1))
by apply Morphisms.path_isomorphic. Defined. (** The precategory of set algebras and homomorphisms for a signature is a (univalent) category. *)
H: Univalence
σ: Signature

IsCategory (precategory_algebra σ)
H: Univalence
σ: Signature

IsCategory (precategory_algebra σ)
H: Univalence
σ: Signature
A, B: precategory_algebra σ

IsEquiv (Morphisms.idtoiso (precategory_algebra σ) (y:=B))
H: Univalence
σ: Signature
A, B: precategory_algebra σ

IsEquiv (λ x : A = B, catiso_to_uaiso^-1 (isomorphic_id ((path_setalgebra A B)^-1 x)))
H: Univalence
σ: Signature
A, B: precategory_algebra σ

IsEquiv (λ x : A = B, isomorphic_id ((path_setalgebra A B)^-1 x))
H: Univalence
σ: Signature
A, B: precategory_algebra σ
IsEquiv catiso_to_uaiso^-1
H: Univalence
σ: Signature
A, B: precategory_algebra σ

IsEquiv (λ x : A = B, isomorphic_id ((path_setalgebra A B)^-1 x))
apply isequiv_compose.
H: Univalence
σ: Signature
A, B: precategory_algebra σ

IsEquiv catiso_to_uaiso^-1
apply isequiv_inverse. Qed. Definition category_algebra `{Univalence} (σ : Signature) : Category := Build_Category (iscategory_algebra σ).