{-# OPTIONS --sized-types --safe --without-K #-}
module GlobSet.Invertible where
open import GlobSet.Invertible.Core public
open import GlobSet
open import GlobSet.Composition
open import GlobSet.HCat
idIsInv : {a : Level}
→ {i : Size}
→ (j : Size< i)
→ {G : GlobSet a i}
→ (h : HigherCat i G)
→ (x : cells G)
→ Invertible i (com h) j (id (com h) j x)
idIsInv j h x .finv = id (com h) j x
idIsInv j h x .fR k = ƛ (hCat h) k (id (com h) j x)
idIsInv j h x .fL k = ƛ (hCat h) k (id (com h) j x)
id' : {a : Level}
→ {i : Size}
→ (j : Size< i)
→ {G : GlobSet a i}
→ (h : HigherCat i G)
→ (x : cells G)
→ InvertibleCell i (com h) j x x
id' j h x .cell = id (com h) j x
id' j h x .invert = idIsInv j h x
invIsInv : {a : Level}
→ {i : Size}
→ (j : Size< i)
→ {G : GlobSet a i}
→ (c : Composable i G)
→ {x y : cells G}
→ (f : cells (morphisms G j x y))
→ (inv : Invertible i c j f)
→ Invertible i c j (finv inv)
invIsInv j c f inv .finv = f
invIsInv j c f inv .fR k = fL inv k
invIsInv j c f inv .fL k = fR inv k
invIsInvCell : {a : Level}
→ {i : Size}
→ (j : Size< i)
→ {G : GlobSet a i}
→ (c : Composable i G)
→ {x y : cells G}
→ (inv : InvertibleCell i c j x y)
→ InvertibleCell i c j y x
invIsInvCell j c inv .cell = finv (invert inv)
invIsInvCell j c inv .invert = invIsInv j c (cell inv) (invert inv)