module Setoid.EqualityType where
open import Prelude
open import Setoid.Definition
open import Setoid.Universes
open import Setoid.Lift
record EQ (l : β) : Set where
field
ty :
(X : U l)
(_ _ : El l X)
β
U l
tyCong :
{X X' : U l}
{x y : El l X}
{x' y' : El l X'}
(_ : π° l β X ~ X')
(_ : β°π l β X βΈ΄ x β X' βΈ΄ x')
(_ : β°π l β X βΈ΄ y β X' βΈ΄ y')
β
π° l β ty X x y ~ ty X' x' y'
rfl :
{X : U l}
(x : El l X)
β
El l (ty X x x)
rflCong :
{X X' : U l}
{x : El l X}
{x' : El l X'}
(_ : π° l β X ~ X')
(_ : β°π l β X βΈ΄ x β X' βΈ΄ x')
β
β°π l β ty X x x βΈ΄ rfl x β ty X' x' x' βΈ΄ rfl x'
reflect :
{X : U l}
{x y : El l X}
(_ : El l (ty X x y))
β
β°π l β X βΈ΄ x β X βΈ΄ y
uip :
{X : U l}
{x y : El l X}
(e e' : El l (ty X x y))
β
β°π l β² (ty X x y) β e ~ e'
eq : β l β EQ l
EQ.ty (eq 0) = Eqβ
EQ.tyCong (eq 0) e e' e'' = (e , e' , e'')
EQ.rfl (eq 0) {X} = hrflβ X
EQ.rflCong (eq 0) _ _ = tt
EQ.reflect (eq 0) e = e
EQ.uip (eq 0) _ _ = tt
EQ.ty (eq(1+ _)) = Eqβ
EQ.tyCong (eq(1+ _)) e e' e'' = (e , e' , e'')
EQ.rfl (eq(1+ _)) {X} = hrflβ X
EQ.rflCong (eq(1+ _)) _ _ = tt
EQ.reflect (eq(1+ _)) e = e
EQ.uip (eq(1+ _)) _ _ = tt