update script

This commit is contained in:
Michael Zhang 2024-07-10 23:06:20 -05:00
parent 27524b9250
commit b5e43eeb22
9 changed files with 151 additions and 50 deletions

View file

@ -17,6 +17,16 @@ build-to-html:
build-book: build-to-html build-book: build-to-html
mdbook build html mdbook build html
pandoc \
-f markdown-markdown_in_html_blocks+raw_html \
-t html \
-i html/src/generated/Progress.md \
> html/book/Progress.html
mkdir -p html/book/progress
cat \
html/ProgressHeader.html \
html/book/Progress.html \
> html/book/progress/index.html
refresh-book: build-to-html refresh-book: build-to-html
mdbook serve html mdbook serve html

24
html/ProgressHeader.html Normal file
View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<style>
@font-face {
font-family: Inter;
font-weight: normal;
src: url(https://mzhang.io/fonts/Inter-Regular.ttf) format(truetype);
}
@font-face {
font-family: Inter;
font-weight: bold;
src: url(https://mzhang.io/fonts/Inter-Bold.ttf) format(truetype);
}
body { font-family: "Inter", sans-serif; }
.cell {
display: flex;
min-height: 48px;
align-items: center;
justify-content: center;
aspect-ratio: 1;
}
</style>
<h1>HoTT Book Progress</h1>

View file

@ -3,6 +3,7 @@
This book tracks my current research goals and progress. This book tracks my current research goals and progress.
- [Git repository](https://git.mzhang.io/school/type-theory) - [Git repository](https://git.mzhang.io/school/type-theory)
- [HoTT Book Formalization Progress](https://mzhang.io/research/progress/)
**Current research:** Formalizing spectral sequences in cubical Agda. **Current research:** Formalizing spectral sequences in cubical Agda.
@ -25,7 +26,3 @@ I have scaled down some of these materials to eBook size, for easier reading on
Cubical Type Theory: a constructive interpretation of the univalence axiom (CCHM) (2015) Cubical Type Theory: a constructive interpretation of the univalence axiom (CCHM) (2015)
[[ebook-sized pdf](https://git.mzhang.io/school/type-theory/raw/branch/master/resources/CCHM/main.pdf)] [[ebook-sized pdf](https://git.mzhang.io/school/type-theory/raw/branch/master/resources/CCHM/main.pdf)]
[[original pdf](https://arxiv.org/pdf/1611.02108)] [[original pdf](https://arxiv.org/pdf/1611.02108)]
## HottBook Progress:
{{#include generated/Progress.md}}

View file

@ -8,7 +8,7 @@ let chapters = {
let gradients = [ let gradients = [
[0, [90, 0, 0]], [0, [90, 0, 0]],
[0.5, [90, 90, 0]], [0.65, [180, 180, 0]],
[1, [0, 90, 0]], [1, [0, 90, 0]],
] ]
@ -34,12 +34,7 @@ let viz = { |k, n|
let color = if $n == 0 { "gray" } else { do $interpColor ($k / $n) } let color = if $n == 0 { "gray" } else { do $interpColor ($k / $n) }
let textColor = if $k == $n { "gold" } else { "white" } let textColor = if $k == $n { "gold" } else { "white" }
$"<div style=\" $"<div class=\"cell\" style=\"
display: flex;
align-items: center;
justify-content: center;
aspect-ratio: 1;
min-height: 80px;
background-color: ($color); background-color: ($color);
color: ($textColor); color: ($textColor);
\"> \">
@ -74,7 +69,6 @@ $chapters
| sort-by Ch | sort-by Ch
| tee { save -f html/src/generated/Progress.md } | tee { save -f html/src/generated/Progress.md }
# open breakdown.json # open breakdown.json
# | transpose # | transpose
# | each {|row| [$row.column0, $row.column1.ratioCompleted] } # | each {|row| [$row.column0, $row.column1.ratioCompleted] }

View file

@ -2,7 +2,7 @@ module HottBook.Chapter1Util where
open import Agda.Primitive open import Agda.Primitive
open import HottBook.Chapter1 open import HottBook.Chapter1
open import HottBook.Chapter2 open import HottBook.Chapter2Lemma231
open import HottBook.Util open import HottBook.Util
Σ-≡ : {l₁ l₂ : Level} {A : Set l₁} {B : A Set l₂} Σ-≡ : {l₁ l₂ : Level} {A : Set l₁} {B : A Set l₂}
@ -10,10 +10,3 @@ open import HottBook.Util
Σ (a₁ a₂) (λ p transport B p b₁ b₂) Σ (a₁ a₂) (λ p transport B p b₁ b₂)
p₁ p₂ p₁ p₂
Σ-≡ {l₁} {l₂} {A} {B} {p₁ @ (a₁ , b₁)} {p₂ @ (a₂ , b₂)} (refl , refl) = refl Σ-≡ {l₁} {l₂} {A} {B} {p₁ @ (a₁ , b₁)} {p₂ @ (a₂ , b₂)} (refl , refl) = refl
neg-homotopy : (neg neg) id
neg-homotopy true = refl
neg-homotopy false = refl
neg-equiv : 𝟚 𝟚
neg-equiv = neg , qinv-to-isequiv (mkQinv neg neg-homotopy neg-homotopy)

View file

@ -6,7 +6,9 @@ module HottBook.Chapter2 where
open import Agda.Primitive.Cubical hiding (i1) open import Agda.Primitive.Cubical hiding (i1)
open import HottBook.Chapter1 open import HottBook.Chapter1
open import HottBook.Chapter1Util
open import HottBook.Chapter2Lemma221 public open import HottBook.Chapter2Lemma221 public
open import HottBook.Chapter2Lemma231 public
private private
variable variable
@ -85,31 +87,25 @@ module lemma2∙1∙4 {l : Level} {A : Set l} where
This comes first, since it is needed to define Theorem 2.1.6. This comes first, since it is needed to define Theorem 2.1.6.
``` ```
record pointed (l : Level) : Set (lsuc l) where pointed : {l : Level} → Set (lsuc l)
eta-equality pointed {l} = Σ (Set l) (λ A → A)
constructor mkPointed
field
A : Set l
a : A
``` ```
### Definition 2.1.8 (loop space) ### Definition 2.1.8 (loop space)
``` ```
Ω : {l : Level} → pointed l → pointed l Ω : {l : Level} → pointed {l} → pointed {l}
Ω (mkPointed A a) = mkPointed (a ≡ a) refl Ω (A , a) = (a ≡ a) , refl
``` ```
### Theorem 2.1.6 (Eckmann-Hilton) ### Theorem 2.1.6 (Eckmann-Hilton)
``` ```
module theorem2∙1∙6 where module theorem2∙1∙6 where
open pointed Ω² : {l : Level} → pointed {l} → pointed {l}
Ω² : {l : Level} → pointed l → pointed l
Ω² p = Ω (Ω p) Ω² p = Ω (Ω p)
-- compose : {l : Level} → (p : pointed l) → Ω² p -- compose : {l : Level} {p : pointed {l}} → (Ω² p) × (Ω² p) → Ω² p
-- compose a b = ? -- compose a b = ?
``` ```
@ -142,15 +138,7 @@ module lemma2∙2∙2 {A B C : Set} where
## 2.3 Type families are fibrations ## 2.3 Type families are fibrations
### Lemma 2.3.1 (Transport) {{#include HottBook.Chapter2Lemma231.md:transport}}
```
transport : {l₁ l₂ : Level} {A : Set l₁} {x y : A}
→ (P : A → Set l₂)
→ (p : x ≡ y)
→ P x → P y
transport {l₁} {l₂} {A} {x} {y} P refl = id
```
### Lemma 2.3.2 (Path lifting property) ### Lemma 2.3.2 (Path lifting property)
@ -589,7 +577,9 @@ corollary2∙7∙3 z = refl
-- → {x y : A} -- → {x y : A}
-- → (p : x ≡ y) -- → (p : x ≡ y)
-- → (u z : Σ (P x) (λ u → Q (x , u))) -- → (u z : Σ (P x) (λ u → Q (x , u)))
-- → transport {! P !} p (u , z) ≡ (transport {! P !} p u , transport {! !} (pair-≡ (p , refl)) z) -- → transport (λ x → Σ (Σ (P x) λ u → Q (x , u)) λ _ → Σ (P x) λ u → Q (x , u)) p (u , z)
-- ≡ ( transport (λ x → Σ (P x) λ u → Q (x , u)) p u
-- , transport (λ (m , n) → {! Σ (P y) ? !}) (Σ-≡ (p , refl)) z)
``` ```
## 2.8 The unit type ## 2.8 The unit type
@ -647,8 +637,8 @@ happly {A} {B} {f} {g} p x = ap (λ h → h x) p
``` ```
postulate postulate
funext : ∀ {l} {A B : Set l} funext : ∀ {l l2} {A : Set l} {B : A → Set l2}
→ {f g : A → B} → {f g : (x : A) → B x}
→ ((x : A) → f x ≡ g x) → ((x : A) → f x ≡ g x)
→ f ≡ g → f ≡ g
``` ```

View file

@ -0,0 +1,20 @@
```
module HottBook.Chapter2Lemma231 where
open import Agda.Primitive
open import HottBook.Chapter1
```
### Lemma 2.3.1 (Transport)
[//]: <> (ANCHOR: transport)
```
transport : {l₁ l₂ : Level} {A : Set l₁} {x y : A}
→ (P : A → Set l₂)
→ (p : x ≡ y)
→ P x → P y
transport {l₁} {l₂} {A} {x} {y} P refl = id
```
[//]: <> (ANCHOR_END: transport)

View file

@ -0,0 +1,11 @@
module HottBook.Chapter2Util where
open import HottBook.Chapter1
open import HottBook.Chapter2
neg-homotopy : (neg neg) id
neg-homotopy true = refl
neg-homotopy false = refl
neg-equiv : 𝟚 𝟚
neg-equiv = neg , qinv-to-isequiv (mkQinv neg neg-homotopy neg-homotopy)

View file

@ -8,6 +8,7 @@ open import Agda.Primitive
open import HottBook.Chapter1 open import HottBook.Chapter1
open import HottBook.Chapter1Util open import HottBook.Chapter1Util
open import HottBook.Chapter2 open import HottBook.Chapter2
open import HottBook.Chapter2Util
open import HottBook.Chapter3Definition331 public open import HottBook.Chapter3Definition331 public
open import HottBook.Chapter3Lemma333 public open import HottBook.Chapter3Lemma333 public
open import HottBook.CoreUtil open import HottBook.CoreUtil
@ -63,7 +64,7 @@ TODO: DO this without path induction
### Example 3.1.6 ### Example 3.1.6
``` ```
-- example3∙1∙6 : {A : Set} {B : A → Set} → ((x : A) → isSet (B x)) → isSet ((x : A) → B x) example3∙1∙6 : {A : Set} {B : A → Set} → ((x : A) → isSet (B x)) → isSet ((x : A) → B x)
-- example3∙1∙6 func f g p q = -- example3∙1∙6 func f g p q =
-- let -- let
-- wtf : p ≡ funext (λ x → happly p x) -- wtf : p ≡ funext (λ x → happly p x)
@ -277,6 +278,23 @@ module definition3∙4∙3 where
``` ```
## 3.6 The logic of mere propositions
### Example 3.6.1
```
example3∙6∙1 : {A B : Set} → isProp A → isProp B → isProp (A × B)
example3∙6∙1 {A} {B} Aprop Bprop =
λ (x1 , x2) (y1 , y2) → Σ-≡ (Aprop x1 y1 , transportconst B (Aprop x1 y1) x2 ∙ Bprop x2 y2)
```
### Example 3.6.2
```
example3∙6∙2 : {A : Set} {B : A → Set} → ((x : A) → isProp (B x)) → isProp ((x : A) → B x)
example3∙6∙2 {A} {B} allProps = λ f g → funext λ x → allProps x (f x) (g x)
```
## 3.7 Propositional truncation ## 3.7 Propositional truncation
``` ```
@ -301,9 +319,6 @@ open section3∙7 public
lemma3∙9∙1 : {P : Set} → isProp P → P ≃ ∥ P ∥ lemma3∙9∙1 : {P : Set} → isProp P → P ≃ ∥ P ∥
lemma3∙9∙1 {P} prop = lemma3∙3∙3 prop prop2 _ g lemma3∙9∙1 {P} prop = lemma3∙3∙3 prop prop2 _ g
where where
thing2 : Σ (∥ P ∥ → P) (λ g → (a : P) → g ( a ) a )
thing2 = rec-∥ P ∥ prop _
thing : Σ (∥ P ∥ → P) (λ g → (a : P) → g a ≡ a) thing : Σ (∥ P ∥ → P) (λ g → (a : P) → g a ≡ a)
thing = rec-∥ P ∥ prop id thing = rec-∥ P ∥ prop id
@ -321,7 +336,7 @@ lemma3∙9∙1 {P} prop = lemma3∙3∙3 prop prop2 _ g
eqP = prop gx gy eqP = prop gx gy
gpx = g-prop gx gpx = g-prop gx
in in
{! !} admit
where where
postulate postulate
-- TODO: Finish this -- TODO: Finish this
@ -337,6 +352,53 @@ isContr : (A : Set l) → Set l
isContr A = Σ A (λ a → (x : A) → a ≡ x) isContr A = Σ A (λ a → (x : A) → a ≡ x)
``` ```
### Lemma 3.11.3
```
module lemma3∙11∙3 where
record properties (A : Set l) : Set l where
constructor mkProperties
field
i : isContr A
ii : A × isProp A
iii : A ≃ 𝟙
i : {A : Set} → isContr A → properties A
i Acontr @ (a , aEq) = mkProperties p1 p2 p3
where
p1 = Acontr
p2 = a , λ x y → sym (aEq x) ∙ aEq y
forward : ((λ _ → tt) ∘ (λ _ → a)) id
forward tt = refl
p3 = (λ _ → tt) , qinv-to-isequiv (mkQinv (λ _ → a) forward aEq)
ii : {A : Set} → A × isProp A → properties A
ii Aprop @ (a , aProp) = mkProperties p1 p2 p3
where
p1 = a , aProp a
p2 = Aprop
forward : ((λ _ → tt) ∘ (λ _ → a)) id
forward tt = refl
p3 = (λ _ → tt) , qinv-to-isequiv (mkQinv (λ _ → a) forward (aProp a))
iii : {A : Set} → A ≃ 𝟙 → properties A
iii Aeqv @ (f , mkIsEquiv g g* h h*) = mkProperties p1 p2 p3
where
p1 = g tt , λ x → {! ap g ? !}
p2 = g tt , λ x y → {! !}
p3 = Aeqv
```
### Lemma 3.11.6
```
lemma3∙11∙6 : {A : Set} {P : A → Set} → ((a : A) → isContr (P a)) → isContr ((x : A) → P x)
lemma3∙11∙6 {A} {P} allContr = {! !}
```
### Lemma 3.11.8 ### Lemma 3.11.8
``` ```