{-# OPTIONS --without-K --sized-types --safe #-} module GlobSet.BiInvertible.Core where open import GlobSet open import GlobSet.Composition record BiInvertible {a : Level} (i : Size) {G : GlobSet a i} (c : Composable i G) (j : Size< i) {x y : cells G} (f : cells (morphisms G j x y)) : Set (suc a) record BiInvertibleCell {a : Level} (i : Size) {G : GlobSet a i} (c : Composable i G) (j : Size< i) (x y : cells G) : Set (suc a) where coinductive field cell : cells (morphisms G j x y) biInv : BiInvertible i c j cell record BiInvertible {a} i {G} c j {x} {y} f where coinductive field f* : cells (morphisms G j y x) *f : cells (morphisms G j y x) fR : (k : Size< j) → BiInvertibleCell j (compHigher c j x x) k (comp1 c f f*) (id c j x) fL : (k : Size< j) → BiInvertibleCell j (compHigher c j y y) k (comp1 c *f f) (id c j y) open BiInvertibleCell public open BiInvertible public