{-# OPTIONS --without-K --safe --sized-types #-}
module GlobSet.Product where
open import Data.Product public
open import GlobSet
infixr 2 _×G_
_×G_ : ∀{a b i} → (G : GlobSet a i) → (H : GlobSet b i) → GlobSet (a ⊔ b) i
cells (G ×G H) = cells G × cells H
morphisms (G ×G H) j (w , x) (y , z) = morphisms G j w y ×G morphisms H j x z
infixr 3 _×GM_
_×GM_ : {a b c d : Level}
→ {i : Size}
→ {G : GlobSet a i}
→ {H : GlobSet b i}
→ {I : GlobSet c i}
→ {J : GlobSet d i}
→ GlobSetMorphism G H
→ GlobSetMorphism I J
→ GlobSetMorphism (G ×G I) (H ×G J)
(ϕ ×GM ψ) .func (x , y) = (func ϕ x) , (func ψ y)
(ϕ ×GM ψ) .funcMorphisms j (x , y) (x' , y') = (funcMorphisms ϕ j x x') ×GM funcMorphisms ψ j y y'
prg₁ : {a b : Level}
→ {i : Size}
→ (G : GlobSet a i)
→ (H : GlobSet b i)
→ GlobSetMorphism (G ×G H) G
prg₁ G H .func (x , y) = x
prg₁ G H .funcMorphisms j (x , y) (x' , y') = prg₁ (morphisms G j x x') (morphisms H j y y')
prg₂ : {a b : Level}
→ {i : Size}
→ (G : GlobSet a i)
→ (H : GlobSet b i)
→ GlobSetMorphism (G ×G H) H
prg₂ G H .func (x , y) = y
prg₂ G H .funcMorphisms j (x , y) (x' , y') = prg₂ (morphisms G j x x') (morphisms H j y y')
symmetryG : {a b : Level}
→ {i : Size}
→ (G : GlobSet a i)
→ (H : GlobSet b i)
→ GlobSetMorphism (G ×G H) (H ×G G)
symmetryG G H .func (x , y) = y , x
symmetryG G H .funcMorphisms j (x , y) (x' , y') = symmetryG (morphisms G j x x') (morphisms H j y y')
interchangeG : {a b c d : Level}
→ {i : Size}
→ (G : GlobSet a i)
→ (H : GlobSet b i)
→ (I : GlobSet c i)
→ (J : GlobSet d i)
→ GlobSetMorphism ((G ×G H) ×G (I ×G J)) ((G ×G I) ×G (H ×G J))
interchangeG G H I J .func ((w , x) , (y , z)) = (w , y) , (x , z)
interchangeG G H I J .funcMorphisms j ((w , x) , (y , z)) ((w' , x') , (y' , z')) =
interchangeG (morphisms G j w w')
(morphisms H j x x')
(morphisms I j y y')
(morphisms J j z z')