foundations.HedbergLemmas.md.

Version of Sunday, January 22, 2023, 10:42 PM

Powered by agda version 2.6.2.2-442c76b and pandoc 2.14.0.3


Investigations on graph-theoretical constructions in Homotopy type theory

Jonathan Prieto-Cubides j.w.w. Håkon Robbestad Gylterud

Department of Informatics

University of Bergen, Norway

{-# OPTIONS --without-K --exact-split #-}
module foundations.HedbergLemmas where

open import foundations.TransportLemmas
open import foundations.EquivalenceType
open import foundations.HLevelTypes
open import foundations.RelationType
open import foundations.FunExtAxiom
open import foundations.FunExtTransport

module
  HedbergLemmas
  where
  module
    HedbergLemmas2
    where

A set is a type when it holds Axiom K.

axiomKisSet
  :  { : Level} {A : Type }
   ((a : A)  (p : a  a)  p  refl a)
   isSet A

axiomKisSet k x _ p idp = k x p
reflRelIsSet
  :  { : Level} (A : Type )
   (r : Rel A)
   ((x y : A)  R {{r}} x y  x  y)  -- xRy ⇒ Id(x,y)
     ((x : A)  R {{r}} x x)           -- ∀ x ⇒ xRx
  ------------------------------------
   isSet A

reflRelIsSet A r f ρ x .x p idp = lemma p
  where
  lemma2
    : {a : A}
     (p : a  a)  (o : R {{r}} a a)
     (f a a o)  f a a (transport (R {{r}} a) p o)
                 [  x  a  x)  p ]

  lemma2 {a} p = funext-transport-l p (f a a) (f a a) (apd (f a) p)

  lemma3
    :  {a : A}
     (p : a  a)
     (f a a (ρ a)) · p  (f a a (ρ a))

  lemma3 {a} p = inv (transport-concat-r p _) · lemma2 p (ρ a) ·
                   ap (f a a) (Rprop {{r}} a a _ (ρ a))

  lemma
    : {a : A}
     (p : a  a)
     p  refl a

  lemma {a} p = ·-cancellation ((f a a (ρ a))) p (lemma3 p)

Lema: if a type is decidable, then ¬¬A is actually A.

lemDoubleNeg
  :  { : Level} {A : Type }
   (A + ¬ A)
  ---------------
   (¬ (¬ A)  A)

lemDoubleNeg (inl x) _ = x
lemDoubleNeg (inr f) n = exfalso (n f)
hedberg
  :  { : Level} {A : Type }
   ((a b : A)  (a  b) + ¬ (a  b))
  -----------------------------------
   isSet A

hedberg {}{A = A} f
  = reflRelIsSet A
      (record { R = λ a b  ¬ (¬ (a  b))
              ; Rprop = isPropNeg })
              doubleNegEq  a z  z (refl a))

  where
  doubleNegEq
   : (a b : A)  ¬ (¬ (a  b))
    (a  b)

  doubleNegEq a b p = lemDoubleNeg (f a b) p

  isPropNeg
    : (a b : A)
     isProp (¬ (¬ (a  b)))

  isPropNeg a b x y = funext λ u  exfalso (x u)

More syntax:

decidable-is-set = hedberg

Latest changes

(2022-12-28)(57c278b4) Last updated: 2021-09-16 15:00:00 by jonathan.cubides
(2022-07-06)(d3a4a8cf) minors by jonathan.cubides
(2022-01-26)(4aef326b) [ reports ] added some revisions by jonathan.cubides
(2021-12-20)(049db6a8) Added code of cubical experiments. by jonathan.cubides
(2021-12-20)(961730c9) [ html ] regular update by jonathan.cubides
(2021-12-20)(e0ef9faa) Fixed compilation and format, remove hidden parts by jonathan.cubides
(2021-12-20)(5120e5d1) Added cubical experiment to the master by jonathan.cubides
(2021-12-17)(828fdd0a) More revisions added for CPP by jonathan.cubides
(2021-12-15)(0d6a99d8) Fixed some broken links and descriptions by jonathan.cubides
(2021-12-15)(662a1f2d) [ .gitignore ] add by jonathan.cubides
(2021-12-15)(0630ce66) Minor fixes by jonathan.cubides
(2021-12-13)(04f10eba) Fixed a lot of details by jonathan.cubides
(2021-12-10)(24195c9f) [ .gitignore ] ignore .zip and arxiv related files by jonathan.cubides
(2021-12-09)(538d2859) minor fixes before dinner by jonathan.cubides
(2021-12-09)(36a1a69f) [ planar.pdf ] w.i.p revisions to share on arxiv first by jonathan.cubides