PART I
B A Y C P L E I C T S U PART I M A i 1 0 i: M : A M - - PowerPoint PPT Presentation
B A Y C P L E I C T S U PART I M A i 1 0 i: M : A M - - PowerPoint PPT Presentation
B A Y C P L E I C T S U PART I M A i 1 0 i: M : A M A A i j i: , j: M : A M A n-cube i 1 : , i 2 : , , i n : M : A M[1/j] M[1/i] M[i/j] M[0/i] M[0/j] M i j i:
i:π β¦ M : A
i 1 M
A
i:π, j:π β¦ M : A
i j
M
A
A
i1:π, i2:π, β¦, in:π β¦ M : A
A
M
n-cube
M
i j
M[0/j] M[1/j] M[1/i] M[0/i] M[i/j]
Ξ β¦ i : π
i:π β Ξ
0 : π π is not a type! It is an alian animal r β§ s : π r : π s : π 1 : π r β¨ s : π r : π s : π ~ r : π r : π
- ptional
A IdA
i n t e r n a l i z e e x t r a p a t h s new paths
univalence funext loop
Pre-cubical Era
(induced)
A IdA
i n t e r n a l i z e n e w p a t h s
univalence loop
Cubical Era judgmental framework
- f paths
base : S1 S1 : U loopr : S1 r : π loop0 β‘ base : S1 loop1 β‘ base : S1 loop: IdS1(base; base)
elimS1[x.C](Mbase; Mloop; N) : C[N/x] x: S1 β’ C : U Mbase : C[base/x] N: S1 Mloop : Mbase =loop
x.C Mbase
elimS1[x.C](Mbase; i.Mloop; N) : C[N/x] x: S1 β’ C : U Mbase : C[base/x] N: S1 i:π β’ Mloop : C[loopi/x] Mloop[0/i] β‘ Mbase : C[base/x] Mloop[1/i] β‘ Mbase : C[base/x]
elimS1[x.C](Mbase; i.Mloop; N) : C[N/x]
Mbase : C[base/x] i:π β’ Mloop : C[loopi/x] Mloop[0/i] β‘ Mbase : C[base/x] Mloop[1/i] β‘ Mbase : C[base/x] loopr : S1 loop1 β‘ base : S1 loop0 β‘ base : S1 base : S1
Mbase Mloop
x.C
elimS1[x.C](Mbase; j.Mloop; base) β‘ Mbase : C[base/x] (β¦) elimS1[x.C](Mbase; j.Mloop; loopi) β‘ Mloop[i/j] : C[loopi/x] (β¦)
- 1. diagonal substitution is crucial
- 2. we need to improve the framework
to enable path concatenation e.g., "loop β loop"
IdA
e x t r a p a t h s
univalence funext loop
Pre-cubical
including concatenation, reversal, etc., via magical J
A
n e w p a t h s
univalence loop
Cubical
*stay tuned for the next week
Mi
Ai Path types
Pathi.A(N; O) : U i:π β¦ A : U N : A[0/i] O : A[1/i]
"Ξ i:π A" with endpoints N O
Ξ»i.M : Pathi.A(N; O) i:π β¦ M : A M[0/i] β‘ N : A[0/i] M[1/i] β‘ O : A[1/i] P@r : A[r/i] r : π P : Pathi.A(N; O) P@0 β‘ N : A[0/i] P : Pathi.A(N; O) P@1 β‘ O : A[1/i]
Mi
Ai Path types
"Ξ i:π A" with endpoints N O
(Ξ»i.M)@r β‘ M[r/i] : A[r/i] i:π β¦ M : A r : π P β‘ Ξ»i.P@i : Pathi.A(N; O) P : Pathi.A(N; O)
Path types
internalizing i:π β¦ M : A
Identification types
freely generated by refl
these two will become equivalent when we fix the framework (next week)
A
n e w p a t h s
univalence loop
*stay tuned for the next week
Where is function extensionality?
YES, WE CAN!
(NOT VIA UNIVALENCE)
P : Ξ x:APath_.B(x)(F(x); G(x)) x:A β¦ P(x) : Path_.B(x)(F(x); G(x)) x:A, i:π β¦ P(x)@i : B(x) i:π, x:A β¦ P(x)@i : B(x) i:π β¦ Ξ»x.P(x)@i : B(x) Ξ»i.Ξ»x.P(x)@i : Path_.Ξ (x:A)B(x)(F; G)
(you need to check the boundaries F and G)
Function extensionality
i:π β¦ Ξ»x.P(x)@i : B(x) Ξ»i.Ξ»x.P(x)@i : Path_.Ξ (x:A)B(x)(F; G) P : Ξ x:APath_.B(x)(F(x); G(x)) x:A β¦ P(x) : Path_.B(x)(F(x); G(x)) x:A, i:π β¦ P(x)@i : B(x) i:π, x:A β¦ P(x)@i : B(x)
- 1. Both paths and functions internalize
hypothetical judgments
- 2. You can exchange hypotheses
- 3. Paths and functions thus "commute"
- 4. Therefore, function extensionality!
Fix the framework (next week)
- 1. What are the types? (form)
- 2. What are the constructors? (intro)
- 3. How to consume an element? (elim)
- 4. What if a constructor is consumed? (Ξ²)
- 5. Uniqueness principle? (Ξ·)
- 6. How to compose stuξ‘? (Kan operators)
every type is responsible for its path concatenation
IdA
e x t r a p a t h s
univalence funext loop
Pre-cubical
including concatenation, reversal, etc., via magical J
A
n e w p a t h s
univalence loop
Cubical
*stay tuned for the next week