Identity type.
\begin{code}
{-# OPTIONS --without-K --exact-split --safe #-}
module Id where
open import Universes
open import Pi
open import Identity-Type renaming (_โก_ to infix 0 _โก_) public
๐ป๐ฎ๐ป๐ต : {X : ๐ค ฬ } (x : X) โ x โก x
๐ป๐ฎ๐ป๐ต x = refl {_} {_} {x}
by-definition : {X : ๐ค ฬ } {x : X} โ x โก x
by-definition = refl
by-construction : {X : ๐ค ฬ } {x : X} โ x โก x
by-construction = refl
by-assumption : {X : ๐ค ฬ } {x : X} โ x โก x
by-assumption = refl
lhs : {X : ๐ค ฬ } {x y : X} โ x โก y โ X
lhs {๐ค} {X} {x} {y} p = x
rhs : {X : ๐ค ฬ } {x y : X} โ x โก y โ X
rhs {๐ค} {X} {x} {y} p = y
Id : {X : ๐ค ฬ } โ X โ X โ ๐ค ฬ
Id = _โก_
Jbased : {X : ๐ค ฬ } (x : X) (A : (y : X) โ x โก y โ ๐ฅ ฬ )
โ A x refl โ (y : X) (r : x โก y) โ A y r
Jbased x A b .x refl = b
J : {X : ๐ค ฬ } (A : (x y : X) โ x โก y โ ๐ฅ ฬ )
โ ((x : X) โ A x x refl) โ {x y : X} (r : x โก y) โ A x y r
J A f {x} {y} = Jbased x (A x) (f x) y
private
transport' : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X}
โ x โก y โ A x โ A y
transport' A {x} {y} p a = Jbased x (ฮป y p โ A y) a y p
transport : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X}
โ x โก y โ A x โ A y
transport A refl = id
_โ_ : {X : ๐ค ฬ } {x y z : X} โ x โก y โ y โก z โ x โก z
p โ q = transport (lhs p โก_) q p
_โปยน : {X : ๐ค ฬ } โ {x y : X} โ x โก y โ y โก x
p โปยน = transport (_โก lhs p) p refl
ap : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) {x x' : X} โ x โก x' โ f x โก f x'
ap f p = transport (ฮป - โ f (lhs p) โก f -) p refl
back-transport : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X} โ x โก y โ A y โ A x
back-transport B p = transport B (p โปยน)
_โผ_ : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } โ ((x : X) โ A x) โ ((x : X) โ A x) โ ๐ค โ ๐ฅ ฬ
f โผ g = โ x โ f x โก g x
\end{code}
Standard syntax for equality chain reasoning:
\begin{code}
_โกโจ_โฉ_ : {X : ๐ค ฬ } (x : X) {y z : X} โ x โก y โ y โก z โ x โก z
_ โกโจ p โฉ q = p โ q
_โ : {X : ๐ค ฬ } (x : X) โ x โก x
_โ _ = refl
\end{code}
Fixities:
\begin{code}
infix 3 _โปยน
infix 1 _โ
infixr 0 _โกโจ_โฉ_
infixl 2 _โ_
infix 4 _โผ_
\end{code}