Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Export Basics.Nat.Require Export HoTT.Universes.DProp.(** * Characterization of the path types of [nat] *)(** We characterize the path types of [nat]. We put this in its own file because it uses [DProp], which has a lot of dependencies. *)Local Set Universe Minimization ToSet.LocalClose Scope trunc_scope.LocalOpen Scope nat_scope.Fixpointcode_nat (mn : nat) {structm} : DHProp@{Set} :=
match m, n with
| 0, 0 => True
| m'.+1, n'.+1 => code_nat m' n'
| _, _ => Falseend.Infix"=n" := code_nat : nat_scope.Fixpointidcode_nat {n} : (n =n n) :=
match n as n return (n =n n) with
| 0 => tt
| S n' => @idcode_nat n'
end.Fixpointpath_nat {nm} : (n =n m) -> (n = m) :=
match m as m, n as n return (n =n m) -> (n = m) with
| 0, 0 => fun_ => idpath
| m'.+1, n'.+1 => funH : (n' =n m') => ap S (path_nat H)
| _, _ => funH => match H withendend.
n, m: nat
IsEquiv path_nat
n, m: nat
IsEquiv path_nat
n, m: nat
(funx : n = m =>
path_nat
(transport (funm' : nat => n =n m') x idcode_nat)) ==
idmap
n, m: nat
(funx : n =n m =>
transport (funm' : nat => n =n m') (path_nat x)
idcode_nat) == idmap
n, m: nat
(funx : n = m =>
path_nat
(transport (funm' : nat => n =n m') x idcode_nat)) ==
idmap
n, m: nat
path_nat idcode_nat = 1
n, m: nat IHn: path_nat idcode_nat = 1
ap S (path_nat idcode_nat) = 1
bydestruct (IHn^)%path.
n, m: nat
(funx : n =n m =>
transport (funm' : nat => n =n m') (path_nat x)
idcode_nat) == idmap
n, m: nat
(funx : n =n m =>
transport (funm' : nat => n =n m') (path_nat x)
idcode_nat) == idmap
n, m: nat x: n =n m
transport (funm' : nat => n =n m') (path_nat x)
idcode_nat = x
apply path_ishprop.}Defined.Definitionequiv_path_nat {nm} : (n =n m) <~> (n = m)
:= Build_Equiv _ _ (@path_nat n m) _.