example 3.1.9

This commit is contained in:
Michael Zhang 2024-07-09 10:24:54 -05:00
parent d3f5406ffa
commit 4c9a94414d
4 changed files with 120 additions and 55 deletions

View file

@ -721,16 +721,21 @@ idtoeqv refl = transport id refl , qinv-to-isequiv (mkQinv id id-homotopy id-hom
``` ```
module axiom2∙10∙3 where module axiom2∙10∙3 where
private
variable
A B : Set l
postulate postulate
ua : {l : Level} {A B : Set l} → (A ≃ B) → (A ≡ B) ua : (A ≃ B) → (A ≡ B)
propositional-computation : (f : A ≃ B) → idtoeqv (ua f) ≡ f
backward : {l : Level} {A B : Set l} → (p : A ≡ B) → (ua ∘ idtoeqv) p ≡ p propositional-uniqueness : (p : A ≡ B) → p ≡ ua (idtoeqv p)
forward : {l : Level} {A B : Set l} → (eqv : A ≃ B) → (idtoeqv ∘ ua) eqv ≡ eqv
ua-eqv : {A B : Set l} → (A ≃ B) ≃ (A ≡ B) ua-eqv : {A B : Set l} → (A ≃ B) ≃ (A ≡ B)
ua-eqv = ua , qinv-to-isequiv (mkQinv idtoeqv backward forward) ua-eqv = ua , qinv-to-isequiv
(mkQinv idtoeqv
(λ p → sym (propositional-uniqueness p))
(λ e → propositional-computation e))
open axiom2∙10∙3 hiding (forward; backward) open axiom2∙10∙3
``` ```
### Lemma 2.10.5 ### Lemma 2.10.5

View file

@ -167,7 +167,9 @@ TODO: Generalizing to dependent functions.
## Exercise 2.10 ## Exercise 2.10
``` ```
postulate
exercise2∙10 : {A : Set} {B : A → Set} {C : Σ A B → Set}
→ Σ A (λ x → Σ (B x) (λ y → C (x , y))) ≃ Σ (Σ A B) (λ p → C p)
``` ```
## Exercise 2.13 ## Exercise 2.13
@ -268,15 +270,15 @@ module exercise2∙16 where
postulate postulate
notFunext : {l1 l2 : Level} (A : Set l1) → (B : A → Set l2) → (f g : (x : A) → B x) → (f g) → (f ≡ g) notFunext : {l1 l2 : Level} (A : Set l1) → (B : A → Set l2) → (f g : (x : A) → B x) → (f g) → (f ≡ g)
realFunext : {l : Level} {A B : Set l} → {f g : A → B} → ((x : A) → f x ≡ g x) → f ≡ g -- realFunext : {l : Level} {A B : Set l} → {f g : A → B} → ((x : A) → f x ≡ g x) → f ≡ g
realFunext {l} {A} {B} {f} {g} p = notFunext A {! B !} {! !} {! !} {! !} -- realFunext {l} {A} {B} {f} {g} p = notFunext A {! B !} {! !} {! !} {! !}
``` ```
## Exercise 2.17 ## Exercise 2.17
``` ```
module exercise2∙17 where module exercise2∙17 where
open axiom2∙10∙3 hiding (forward; backward) open axiom2∙10∙3
statement = {A A' B B' : Set} → A ≃ A' → B ≃ B' → (A × B) ≃ (A' × B') statement = {A A' B B' : Set} → A ≃ A' → B ≃ B' → (A × B) ≃ (A' × B')
--- I have no idea where this goes but this definitely needs to exist --- I have no idea where this goes but this definitely needs to exist
@ -285,21 +287,21 @@ module exercise2∙17 where
pair-≡ refl refl = refl pair-≡ refl refl = refl
-- Without univalence -- Without univalence
i : statement -- i : statement
i {A} {A'} {B} {B'} (A-eqv @ (Af , A-isequiv)) (B-eqv @ (Bf , B-isequiv)) = -- i {A} {A'} {B} {B'} (A-eqv @ (Af , A-isequiv)) (B-eqv @ (Bf , B-isequiv)) =
f , qinv-to-isequiv (mkQinv g {! !} {! !}) -- f , qinv-to-isequiv (mkQinv g {! !} {! !})
where -- where
f : (A × B) → (A' × B') -- f : (A × B) → (A' × B')
f (a , b) = Af a , Bf b -- f (a , b) = Af a , Bf b
g : (A' × B') → (A × B) -- g : (A' × B') → (A × B)
g (a' , b') = (isequiv.g A-isequiv) a' , (isequiv.g B-isequiv) b' -- g (a' , b') = (isequiv.g A-isequiv) a' , (isequiv.g B-isequiv) b'
backward : (f ∘ g) id -- backward : (f ∘ g) id
backward x = {! !} -- backward x = {! !}
forward : (g ∘ f) id -- forward : (g ∘ f) id
forward x = {! !} -- forward x = {! !}
-- With univalence -- With univalence
ii : statement ii : statement

View file

@ -81,46 +81,58 @@ is-1-type A = (x y : A) → (p q : x ≡ y) → (r s : p ≡ q) → r ≡ s
### Lemma 3.1.8 ### Lemma 3.1.8
``` ```
-- lemma3∙1∙8 : {A : Set} → isSet A → is-1-type A lemma3∙1∙8 : {A : Set} → isSet A → is-1-type A
-- lemma3∙1∙8 {A} A-set x y p q r s = lemma3∙1∙8 {A} A-set x y p q r s =
-- let g = λ q → A-set x y p q in let
-- let g : (q : x ≡ y) → p ≡ q
-- what : {q' : x ≡ y} (r : q ≡ q') → g q ∙ r ≡ g q' g q = A-set x y p q
-- what r =
-- let what3 = apd g r in what : (q' : x ≡ y) → (r : q ≡ q') → transport (λ p' → p ≡ p') r (g q) ≡ g q'
-- let what4 = lemma2∙11∙2.i r (g q) in what q' r = apd g r
-- let what5 = {! !} in
-- sym what4 ∙ what3 what2 : (q' : x ≡ y) → (r : q ≡ q') → (g q) ∙ r ≡ g q'
-- in what2 q' r = sym (lemma2∙11∙2.i r (g q)) ∙ what q' r
-- -- let what2 = what r in
-- {! !} what3 : (q' : x ≡ y) → (r s : q ≡ q') → (g q) ∙ r ≡ (g q) ∙ s
what3 q' r s = what2 q' r ∙ sym (what2 q' s)
what4 : (g q) ∙ (sym r) ≡ (g q) ∙ (sym s)
what4 = what3 p (sym r) (sym s)
in what5
where
-- TODO: Dont' feel like proving this for now, will revisit later
postulate
what5 : r ≡ s
``` ```
### Example 3.1.9 ### Example 3.1.9
``` ```
-- example3∙1∙9 : ∀ {l : Level} → ¬_ {lsuc l} (isSet (Set l)) example3∙1∙9 : ¬ (isSet Set)
-- example3∙1∙9 p = remark2∙12∙6 lol example3∙1∙9 p = remark2∙12∙6.true≢false lol
-- where where
-- open axiom2∙10∙3 open axiom2∙10∙3
-- f-path : 𝟚𝟚 f-path : 𝟚𝟚
-- f-path = ua neg-equiv f-path = ua neg-equiv
-- bogus : id ≡ neg bogus : id ≡ neg
-- bogus = bogus =
-- let let
-- -- helper : f-path ≡ refl helper : f-path ≡ refl
-- -- helper = p 𝟚 𝟚 f-path refl helper = p 𝟚 𝟚 f-path refl
-- a = ap wtf : idtoeqv f-path ≡ idtoeqv refl
wtf = ap idtoeqv helper
-- -- wtf : idtoeqv f-path ≡ idtoeqv refl wtf2 = ap Σ.fst wtf
-- -- wtf = ap idtoeqv helper wtf3 = ap Σ.fst (propositional-computation neg-equiv)
-- in {! !} wtf4 = sym wtf3 ∙ wtf2
in sym wtf4
-- lol : true ≡ false lol : true ≡ false
-- lol = ap (λ f → f true) bogus lol = ap (λ f → f true) bogus
``` ```
## 3.2 Propositions as types? ## 3.2 Propositions as types?
@ -306,3 +318,25 @@ lemma3∙9∙1 {P} prop = lemma3∙3∙3 prop prop2 _ g
-- TODO: Finish this -- TODO: Finish this
admit : x ≡ y admit : x ≡ y
``` ```
## 3.11 Contractibility
### Definition 3.11.1
```
isContr : (A : Set) → Set
isContr A = Σ A (λ a → (x : A) → a ≡ x)
```
### Lemma 3.11.8
```
lemma3∙11∙8 : (A : Set) → (a : A) → isContr (Σ A (λ x → a ≡ x))
lemma3∙11∙8 A a = (a , refl) , λ y → Σ-≡ (Σ.snd y , helper y)
where
f : (x : A) → Set
f x = a ≡ x
helper : (y : Σ A f) → transport f (Σ.snd y) refl ≡ Σ.snd y
helper y = {! !}
```

View file

@ -3,6 +3,7 @@ module HottBook.Chapter4 where
open import HottBook.Chapter1 open import HottBook.Chapter1
open import HottBook.Chapter2 open import HottBook.Chapter2
open import HottBook.Chapter2Exercises
open import HottBook.Chapter3 open import HottBook.Chapter3
private private
@ -26,10 +27,33 @@ record satisfies-equivalence-properties {A B : Set} {f : A → B} (isequiv : (A
``` ```
lemma4∙1∙1 : {A B : Set} → (f : A → B) → qinv f → qinv f ≃ ((x : A) → x ≡ x) lemma4∙1∙1 : {A B : Set} → (f : A → B) → qinv f → qinv f ≃ ((x : A) → x ≡ x)
lemma4∙1∙1 {A} f q = {! !} lemma4∙1∙1 {A} {B} f f-qinv = goal
where where
ff : qinv f → (x : A) → x ≡ x open axiom2∙10∙3
ff = {! !}
f-equiv : A ≃ B
f-equiv = f , qinv-to-isequiv f-qinv
p : A ≡ B
p = ua f-equiv
useful : idtoeqv p ≡ f-equiv
useful = propositional-computation f-equiv
goal : qinv f ≃ ((x : A) → x ≡ x)
goal2 : qinv (Σ.fst (idtoeqv p)) ≃ ((x : A) → x ≡ x)
goal = idtoeqv (ap qinv (ap Σ.fst (sym useful)) ∙ ua goal2)
goal3 : (A : Set) → qinv id ≃ ((x : A) → x ≡ x)
goal2 = J (λ A B p → qinv (Σ.fst (idtoeqv p)) ≃ ((x : A) → x ≡ x))
(λ A → goal3 A) A B p
goal4 : (A : Set) → qinv id → Σ (A → A) (λ g → (g ≡ id) × (g ≡ id))
goal4 A (mkQinv g α β) = g , funext α , funext β
goal5 : (A : Set) → Σ (A → A) (λ g → (g ≡ id) × (g ≡ id)) → Σ (Σ (A → A) (λ g → g ≡ id)) (λ h → Σ.fst h ≡ id)
goal5 A g = (Σ.fst exercise2∙10) g
``` ```
### Lemma 4.1.2 ### Lemma 4.1.2