Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.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 Import Metatheory.Core Metatheory.FunextVarieties.(** ** We can construct an interval type as [Trunc -1 Bool] *)Local Definitioninterval := Trunc (-1) Bool.
P: Type a, b: P p: a = b
interval -> P
P: Type a, b: P p: a = b
interval -> P
P: Type a, b: P p: a = b x: Trunc (-1) Bool
P
P: Type a, b: P p: a = b x: Trunc (-1) Bool
{pt : P & pt = b} -> P
P: Type a, b: P p: a = b x: Trunc (-1) Bool
{pt : P & pt = b}
P: Type a, b: P p: a = b x: Trunc (-1) Bool
{pt : P & pt = b} -> P
apply pr1.
P: Type a, b: P p: a = b x: Trunc (-1) Bool
{pt : P & pt = b}
P: Type a, b: P p: a = b x: Trunc (-1) Bool
{pt : P & pt = b}
P: Type a, b: P p: a = b x: Bool
{pt : P & pt = b}
P: Type a, b: P p: a = b x: Bool
(if x then a else b) = b
destruct x; (reflexivity || assumption).}Defined.Local Definitionseg : tr true = tr false :> interval
:= path_ishprop _ _.(** ** From an interval type, and thus from truncations, we can prove function extensionality. *)Definitionfunext_type_from_trunc : Funext_type
:= WeakFunext_implies_Funext (NaiveFunext_implies_WeakFunext
(funAPfgp =>
leth := fun (x:interval) (a:A) =>
interval_rec _ (f a) (g a) (p a) x
in ap h seg)).