{-# OPTIONS --without-K --safe --sized-types #-}
module GlobSet.HCat where
open import GlobSet
open import GlobSet.Product
open import GlobSet.Composition
open import GlobSet.Invertible.Core
record SameMorphism {a b : Level}
{i : Size}
{G : GlobSet a i}
{H : GlobSet b i}
(c : Composable i H)
(F₁ F₂ : GlobSetMorphism G H) : Set (suc (a ⊔ b)) where
coinductive
field
eq : (j : Size< i)
→ (x : cells G)
→ InvertibleCell i c j (func F₁ x) (func F₂ x)
open SameMorphism public
record PreserveIden {a b : Level}
{i : Size}
{G : GlobSet a i}
{H : GlobSet b i}
(cg : Composable i G)
(ch : Composable i H)
(F : GlobSetMorphism G H) : Set (suc (a ⊔ b)) where
coinductive
field
idPreserve : (j : Size< i)
→ (k : Size< j)
→ (x : cells G)
→ InvertibleCell j
(compHigher ch j (func F x) (func F x))
k
(func (funcMorphisms F j x x) (id cg j x))
(id ch j (func F x))
idPreserveCoin : (j : Size< i)
→ (x y : cells G)
→ PreserveIden (compHigher cg j x y)
(compHigher ch j (func F x) (func F y))
(funcMorphisms F j x y)
open PreserveIden public
record PreserveComp {a b : Level}
{i : Size}
{G : GlobSet a i}
{H : GlobSet b i}
(cg : Composable i G)
(ch : Composable i H)
(F : GlobSetMorphism G H) : Set (suc (a ⊔ b)) where
coinductive
field
compPreserve : (j : Size< i)
→ (k : Size< j)
→ (x y z : cells G)
→ SameMorphism (compHigher ch j (func F x) (func F z))
(gComp (comp ch j (func F x) (func F y) (func F z))
(funcMorphisms F j x y ×GM funcMorphisms F j y z))
(gComp (funcMorphisms F j x z) (comp cg j x y z))
compPreserveCoin : (j : Size< i)
→ (x y : cells G)
→ PreserveComp (compHigher cg j x y)
(compHigher ch j (func F x) (func F y))
(funcMorphisms F j x y)
open PreserveComp public
record HCat {a : Level} {i : Size} (G : GlobSet a i) (com : Composable i G) : Set (suc a) where
coinductive
field
compPreserveId : (j : Size< i)
→ (x y z : cells G)
→ PreserveIden (prodComp (compHigher com j x y) (compHigher com j y z))
(compHigher com j x z)
(comp com j x y z)
compPreserveComp : (j : Size< i)
→ (x y z : cells G)
→ PreserveComp (prodComp (compHigher com j x y) (compHigher com j y z))
(compHigher com j x z)
(comp com j x y z)
ƛ : {j : Size< i}
→ (k : Size< j)
→ {x y : cells G}
→ (f : cells (morphisms G j x y))
→ InvertibleCell j
(compHigher com j x y)
k
(comp1 com (id com j x) f)
f
ρ : {j : Size< i}
→ (k : Size< j)
→ {x y : cells G}
→ (f : cells (morphisms G j x y))
→ InvertibleCell j
(compHigher com j x y)
k
(comp1 com f (id com j y))
f
assoc : {j : Size< i}
{k : Size< j}
{v x y z : cells G}
→ (a : cells (morphisms G j v x))
→ (b : cells (morphisms G j x y))
→ (c : cells (morphisms G j y z))
→ InvertibleCell j
(compHigher com j v z)
k
(comp1 com (comp1 com a b) c)
(comp1 com a (comp1 com b c))
hcoin : (j : Size< i)
→ (x y : cells G)
→ HCat (morphisms G j x y) (compHigher com j x y)
interchange₁ : {j : Size< i}
{k : Size< j}
{l : Size< k}
{x y z : cells G}
{a b c : cells (morphisms G j x y)}
{d e f : cells (morphisms G j y z)}
→ (α : cells (morphisms (morphisms G j x y) k a b))
→ (β : cells (morphisms (morphisms G j y z) k d e))
→ (γ : cells (morphisms (morphisms G j x y) k b c))
→ (δ : cells (morphisms (morphisms G j y z) k e f))
→ InvertibleCell k
(compHigher (compHigher com j x z)
k
(comp1 com a d)
(comp1 com c f))
l
(comp1 (compHigher com j x z)
(comp2 com α β)
(comp2 com γ δ))
(comp2 com
(comp1 (compHigher com
j
x
y)
α
γ)
(comp1 (compHigher com
j
y
z)
β
δ))
interchange₁ {j} {k} {l} {x} {y} {z} {a} {b} {c} {d} {e} {f} α β γ δ =
eq (compPreserve (compPreserveComp j x y z) k l (a , d) (b , e) (c , f)) l ((α , β) , γ , δ)
interchange₂ : {j : Size< i}
{k : Size< j}
{l : Size< k}
{m : Size< l}
{x y z : cells G}
{a b : cells (morphisms G j x y)}
{c d : cells (morphisms G j y z)}
{α β γ : cells (morphisms (morphisms G j x y) k a b)}
{δ ε ζ : cells (morphisms (morphisms G j y z) k c d)}
→ (ϕ : cells (morphisms (morphisms (morphisms G j x y) k a b) l α β))
→ (χ : cells (morphisms (morphisms (morphisms G j x y) k a b) l β γ))
→ (ψ : cells (morphisms (morphisms (morphisms G j y z) k c d) l δ ε))
→ (ω : cells (morphisms (morphisms (morphisms G j y z) k c d) l ε ζ))
→ InvertibleCell l (compHigher (compHigher (compHigher com j x z)
k
(comp1 com a c)
(comp1 com b d))
l
(comp2 com α δ)
(comp2 com γ ζ))
m
(comp1 (compHigher (compHigher com j x z)
k
(comp1 com a c)
(comp1 com b d))
(comp3 com ϕ ψ)
(comp3 com χ ω))
(comp3 com
(comp1 (compHigher (compHigher com j x y) k a b) ϕ χ)
(comp1 (compHigher (compHigher com j y z) k c d) ψ ω))
interchange₂ {j} {k} {l} {m} {x} {y} {z} {a} {b} {c} {d} {α} {β} {γ} {δ} {ε} {ζ} ϕ χ ψ ω =
eq (compPreserve (compPreserveCoin (compPreserveComp j x y z) k (a , c) (b , d)) l m (α , δ) (β , ε) (γ , ζ)) m ((ϕ , ψ) , χ , ω)
idenManip₁ : {j : Size< i}
{k : Size< j}
{l : Size< k}
{x y z : cells G}
→ (f : cells (morphisms G j x y))
→ (g : cells (morphisms G j y z))
→ InvertibleCell k
(compHigher (compHigher com j x z)
k
(comp1 com f g)
(comp1 com f g))
l
(comp2 com
(id (compHigher com j x y) k f)
(id (compHigher com j y z) k g))
(id (compHigher com j x z) k (comp1 com f g))
idenManip₁ {j} {k} {l} {x} {y} {z} f g = idPreserve (compPreserveId j x y z) k l (f , g)
idenManip₂ : {j : Size< i}
{k : Size< j}
{l : Size< k}
{m : Size< l}
{x y z : cells G}
{a b : cells (morphisms G j x y)}
{c d : cells (morphisms G j y z)}
→ (α : cells (morphisms (morphisms G j x y) k a b))
→ (β : cells (morphisms (morphisms G j y z) k c d))
→ InvertibleCell l (compHigher (compHigher (compHigher com j x z)
k
(comp1 com a c)
(comp1 com b d))
l
(comp2 com α β)
(comp2 com α β))
m
(comp3 com
(id (compHigher (compHigher com j x y)
k
a
b)
l
α)
(id (compHigher (compHigher com j y z)
k
c
d)
l
β))
(id (compHigher (compHigher com j x z)
k
(comp1 com a c)
(comp1 com b d))
l
(comp2 com α β))
idenManip₂ {j} {k} {l} {m} {x} {y} {z} {a} {b} {c} {d} α β =
idPreserve (idPreserveCoin (compPreserveId j x y z) k (a , c) (b , d)) l m (α , β)
open HCat public
record HigherCat {a : Level} (i : Size) (G : GlobSet a i) : Set (suc a) where
field
com : Composable i G
hCat : HCat G com
open HigherCat public
coin : {a : Level}
→ {i : Size}
→ {G : GlobSet a i}
→ HigherCat i G
→ (j : Size< i)
→ (x y : cells G)
→ HigherCat j (morphisms G j x y)
coin h j x y .com = compHigher (com h) j x y
coin h j x y .hCat = hcoin (hCat h) j x y