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}