Identity type. \begin{code} {-# OPTIONS --without-K --exact-split --safe --auto-inline #-} module MLTT.Id where open import MLTT.Universes open import MLTT.Pi open import MLTT.Identity-Type renaming (_๏ผ_ to infix 0 _๏ผ_) public ๐ป๐ฎ๐ป๐ต : {X : ๐ค ฬ } (x : X) โ x ๏ผ x ๐ป๐ฎ๐ป๐ต x = refl {_} {_} {x} 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 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 _โ_ : {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 transportโปยน : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X} โ x ๏ผ y โ A y โ A x 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} Notations to make some proofs more readable: \begin{code} 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 \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}