A K N
Correction: We will redo the empty type the rules were wrong; the video was re-uploaded
hcomp i ( Π x:A B) [ φ ↦ N] M N(x) M(x) N(x) λ x.hcomp i B [ φ ↦ N(x)] M(x) B X fill the square with the same x along i A i
transp i ( Π x:A B) φ M λ x.transp i B[filler i (x)/x] φ M(filler 0 (x)) M(x') M(x) filler i (x) : ≡ transp-fill ~i A φ x filler x back and forth x' i
hcomp i ( Σ x:A B) [ φ ↦ N] M snd(N) ⟨ hcomp i A [ φ ↦ fst(N)] fst(M) , s n comp i B[filler i /x] [ φ ↦ snd(N)] snd(M) ⟩ d snd(N) ( M ) filler i : ≡ hfill i A [ φ ↦ fst(N)] fst(M) fst(N) filler needs comp i because fst(M) fst(N) B(filler/x) depends on i i
transp i ( Σ x:A B) φ M ⟨ transp i A φ fst(M) , snd(M) transp i B[filler i /x] φ snd(M) ⟩ filler filler i : ≡ transp-fill i A φ fst(M) fst(M) i
M OPERATORS r r e e l l l l i i f f M DERIVED A A i i transp-fill ~i A φ M transp-fill i A φ M N N filler filler M M N N A A i i i hfill i A [ φ ↦ N] M comp i A [ φ ↦ N] M
the unit natural numbers functions disjoint sums pairs the empty type paths the circle universes
Q Q N P Q P M Q Path j.A (M; N) A hcomp i (Path j.A (M; N)) [ φ ↦ Q] P ≡ λ j.hcomp i A [ φ ↦ Q@j, j=0 ↦ M, j=1 ↦ N] P@j
transp i (Path j.A (M; N)) φ P ≡ λ j.comp i A [ φ ↦ P@j, j=0 ↦ M, j=1 ↦ N] P@j N P P M Path j.A (M; N) A
the unit natural numbers functions disjoint sums pairs the empty type paths the circle universes negative types positive types
transp i ℕ φ M M M always works
N hcomp i ℕ [ φ ↦ N] M M If φ = true, this should reduce to N[1/i] N Otherwise, what should we do? Freely generated inductive types now have irreducible hcomps
C ℕ elim(hcomp) = comp(elim) E(hcomp i ℕ [ φ ↦ O] P) ≡ comp i C[filler i /x] [ φ ↦ E(O)] E(P) E(O) : ≡ elim ℕ [x.C](M; x.y.N; O) filler i : ≡ hfill i ℕ [ φ ↦ O] P
1. Inductive types have formal hcomps 2. Elim commutes with formal hcomps e.g., ⊥ , ℕ , 2, A+B, the circle, etc. transp can always be reduced* *except for indexed inductive families
inr inl A B A+B transp (A+B) φ inl(M) ≡ inl(transp A φ M) transp (A+B) φ inr(M) ≡ inr(transp B φ M)
Optional* hcomp can commute with constructors ℕ suc(hcomp i ℕ [ φ ↦ N] M) ≡ hcomp i ℕ [ φ ↦ suc(N)] suc(M) A+B inl(hcomp i A [ φ ↦ N] M) ≡ hcomp i (A+B) [ φ ↦ inl(N)] inl(M) inr(hcomp i B [ φ ↦ N] M) ≡ hcomp i (A+B) [ φ ↦ inr(N)] inr(M) *Cubical Agda has these rules
the unit natural numbers functions disjoint sums pairs the empty type paths the circle universes negative types positive types
Recommend
More recommend