|
6 | 6 | Copyright (c) Groupoid Infinity, 2014-2023. -} |
7 | 7 |
|
8 | 8 | module mltt where |
9 | | -import lib/foundations/mltt/pi |
10 | | -import lib/foundations/mltt/sigma |
11 | | -import lib/foundations/mltt/list |
12 | | -import lib/foundations/univalent/path |
13 | 9 | option girard true |
14 | 10 |
|
15 | | -def Definition : U := |
16 | | - Σ (name: List ℕ) |
17 | | - (telescope: List (Σ(A:U),A)) |
18 | | - (landing: U) |
19 | | - (body: U), 𝟏 |
| 11 | +def Path (A : U) (x y : A) : U := PathP (<_> A) x y |
| 12 | +def idp (A : U) (x : A) : Path A x x := <_> x |
| 13 | +def Pi (O : 𝟏) (A : U) (B : A → U) : U := Π (x : A), B x |
| 14 | +def Π-lambda (O : 𝟏) (A: U) (B: A → U) (b: Pi ★ A B) : Pi ★ A B := λ (x : A), b x |
| 15 | +def Π-apply (O : 𝟏) (A: U) (B: A → U) (f: Pi ★ A B) (a: A) : B a := f a |
| 16 | +def Π-β (O : 𝟏) (A : U) (B : A → U) (a : A) (f : Pi ★ A B) : Path (B a) (Π-apply ★ A B (Π-lambda ★ A B f) a) (f a) := idp (B a) (f a) |
| 17 | +def Π-η (O : 𝟏) (A : U) (B : A → U) (a : A) (f : Pi ★ A B) : Path (Pi ★ A B) f (λ (x : A), f x) := idp (Pi ★ A B) f |
| 18 | +def Sigma (O : 𝟏) (A : U) (B : A → U) : U := summa (x: A), B x |
| 19 | +def pair (O : 𝟏) (A: U) (B: A → U) (a: A) (b: B a) : Sigma ★ A B := (a, b) |
| 20 | +def pr₁ (O : 𝟏) (A: U) (B: A → U) (x: Sigma ★ A B) : A := x.1 |
| 21 | +def pr₂ (O : 𝟏) (A: U) (B: A → U) (x: Sigma ★ A B) : B (pr₁ ★ A B x) := x.2 |
| 22 | +def Σ-β₁ (O : 𝟏) (A : U) (B : A → U) (a : A) (b : B a) : Path A a (pr₁ ★ A B (a ,b)) := idp A a |
| 23 | +def Σ-β₂ (O : 𝟏) (A : U) (B : A → U) (a : A) (b : B a) : Path (B a) b (pr₂ ★ A B (a, b)) := idp (B a) b |
| 24 | +def Σ-η (O : 𝟏) (A : U) (B : A → U) (p : Sigma ★ A B) : Path (Sigma ★ A B) p (pr₁ ★ A B p, pr₂ ★ A B p) := idp (Sigma ★ A B) p |
20 | 25 |
|
21 | | -def IdentitySystem (A: U) : U ≔ |
22 | | - Σ (=-form : A → A → U) |
23 | | - (=-ctor : Π (a : A), =-form a a) |
24 | | - (=-elim : Π (a : A) (C: Π (x y: A) (p: =-form x y), U) |
25 | | - (d: C a a (=-ctor a)) (y: A) |
26 | | - (p: =-form a y), C a y p) |
27 | | - (=-comp : Π (a : A) (C: Π (x y: A) (p: =-form x y), U) |
28 | | - (d: C a a (=-ctor a)), |
29 | | - Path (C a a (=-ctor a)) d |
30 | | - (=-elim a C d a (=-ctor a))), 𝟏 |
| 26 | +def Path-1 (O : 𝟏) (A : U) (x y : A) : U := PathP (<_> A) x y |
| 27 | +def idp-1 (O : 𝟏) (A : U) (x : A) : Path A x x := <_> x |
| 28 | +def transport (A B: U) (p : PathP (<_> U) A B) (a: A): B := transp p 0 a |
| 29 | +def singl (A: U) (a: A): U := Σ (x: A), Path A a x |
| 30 | +def eta (A: U) (a: A): singl A a := (a, idp A a) |
| 31 | +def contr (A : U) (a b : A) (p : Path A a b) : Path (singl A a) (eta A a) (b, p) := <i> (p @ i, <j> p @ i /\ j) |
| 32 | +def trans_comp (A : U) (a : A) : Path A a (transport A A (<i> A) a) := <j> transp (<_> A) -j a |
| 33 | +def subst (A : U) (P : A -> U) (a b : A) (p : Path A a b) (e : P a) : P b := transp (<i> P (p @ i)) 0 e |
| 34 | +def subst-comp (A: U) (P: A → U) (a: A) (e: P a): Path (P a) e (subst A P a a (idp A a) e) := trans_comp (P a) e |
| 35 | +def D (A : U) : U₁ := Π (x y : A), Path A x y → U |
31 | 36 |
|
32 | | -def FibrationalSystem (A : U) : U₁ ≔ |
33 | | - Σ (Π-form : Π (B : A → U), U) |
34 | | - (Π-ctor₁ : Π (B : A → U), Pi A B → Pi A B) |
35 | | - (Π-elim₁ : Π (B : A → U), Pi A B → Pi A B) |
36 | | - (Π-comp₁ : Π (B : A → U) (a : A) (f : Pi A B), Path (B a) (Π-elim₁ B (Π-ctor₁ B f) a) (f a)) |
37 | | - (Π-comp₂ : Π (B : A → U) (a : A) (f : Pi A B), Path (Pi A B) f (λ (x : A), f x)) |
38 | | - (Σ-form : Π (B : A → U), U) |
39 | | - (Σ-ctor₁ : Π (B : A → U) (a : A) (b : B a) , Sigma A B) |
40 | | - (Σ-elim₁ : Π (B : A → U) (p : Sigma A B), A) |
41 | | - (Σ-elim₂ : Π (B : A → U) (p : Sigma A B), B (pr₁ A B p)) |
42 | | - (Σ-comp₁ : Π (B : A → U) (a : A) (b: B a), Path A a (Σ-elim₁ B (Σ-ctor₁ B a b))) |
43 | | - (Σ-comp₂ : Π (B : A → U) (a : A) (b: B a), Path (B a) b (Σ-elim₂ B (a, b))) |
44 | | - (Σ-comp₃ : Π (B : A → U) (p : Sigma A B), Path (Sigma A B) p (pr₁ A B p, pr₂ A B p)), 𝟏 |
| 37 | +def J (A: U) (x: A) (C: D A) (d: C x x (idp A x)) (y: A) (p: Path A x y): C x y p |
| 38 | + := subst (singl A x) (\ (z: singl A x), C x (z.1) (z.2)) (eta A x) (y, p) (contr A x y p) d |
| 39 | +def J-1 (O : 𝟏) (A : U) (x : A) (C: D A) (d: C x x (idp A x)) (y: A) (p: Path A x y): C x y p |
| 40 | + := subst (singl A x) (\ (z: singl A x), C x (z.1) (z.2)) (eta A x) (y, p) (contr A x y p) d |
| 41 | +def J-β (O : 𝟏) (A : U) (a : A) (C : D A) (d: C a a (idp A a)) : Path (C a a (idp A a)) d (J A a C d a (idp A a)) |
| 42 | + := subst-comp (singl A a) (\ (z: singl A a), C a (z.1) (z.2)) (eta A a) d |
45 | 43 |
|
46 | | -def MLTT (A : U) : U₁ ≔ |
47 | | - Σ (Π-form : Π (B : A → U), U) |
48 | | - (Π-ctor₁ : Π (B : A → U), Pi A B → Pi A B) |
49 | | - (Π-elim₁ : Π (B : A → U), Pi A B → Pi A B) |
50 | | - (Π-comp₁ : Π (B : A → U) (a : A) (f : Pi A B), Path (B a) (Π-elim₁ B (Π-ctor₁ B f) a) (f a)) |
51 | | - (Π-comp₂ : Π (B : A → U) (a : A) (f : Pi A B), Path (Pi A B) f (λ (x : A), f x)) |
52 | | - (Σ-form : Π (B : A → U), U) |
53 | | - (Σ-ctor₁ : Π (B : A → U) (a : A) (b : B a) , Sigma A B) |
54 | | - (Σ-elim₁ : Π (B : A → U) (p : Sigma A B), A) |
55 | | - (Σ-elim₂ : Π (B : A → U) (p : Sigma A B), B (pr₁ A B p)) |
56 | | - (Σ-comp₁ : Π (B : A → U) (a : A) (b: B a), Path A a (Σ-elim₁ B (Σ-ctor₁ B a b))) |
57 | | - (Σ-comp₂ : Π (B : A → U) (a : A) (b: B a), Path (B a) b (Σ-elim₂ B (a, b))) |
58 | | - (Σ-comp₃ : Π (B : A → U) (p : Sigma A B), Path (Sigma A B) p (pr₁ A B p, pr₂ A B p)) |
59 | | - (=-form : Π (a : A), A → U) |
60 | | - (=-ctor₁ : Π (a : A), Path A a a) |
61 | | - (=-elim₁ : Π (a : A) (C: D A) (d: C a a (=-ctor₁ a)) (y: A) (p: Path A a y), C a y p) |
62 | | - (=-comp₁ : Π (a : A) (C: D A) (d: C a a (=-ctor₁ a)), |
63 | | - Path (C a a (=-ctor₁ a)) d (=-elim₁ a C d a (=-ctor₁ a))), 𝟏 |
| 44 | +def MLTT := |
| 45 | + Σ (Π-form : Π (A : U) (B : A → U), U) |
| 46 | + (Π-ctor₁ : Π (A : U) (B : A → U), Pi ★ A B → Pi ★ A B) |
| 47 | + (Π-elim₁ : Π (A : U) (B : A → U), Pi ★ A B → Pi ★ A B) |
| 48 | + (Π-comp₁ : Π (A : U) (B : A → U) (a : A) (f : Pi ★ A B), Path (B a) (Π-elim₁ A B (Π-ctor₁ A B f) a) (f a)) |
| 49 | + (Π-comp₂ : Π (A : U) (B : A → U) (a : A) (f : Pi ★ A B), Path (Pi ★ A B) f (λ (x : A), f x)) |
| 50 | + (Σ-form : Π (A : U) (B : A → U), U) |
| 51 | + (Σ-ctor₁ : Π (A : U) (B : A → U) (a : A) (b : B a) , Sigma ★ A B) |
| 52 | + (Σ-elim₁ : Π (A : U) (B : A → U) (p : Sigma ★ A B), A) |
| 53 | + (Σ-elim₂ : Π (A : U) (B : A → U) (p : Sigma ★ A B), B (pr₁ ★ A B p)) |
| 54 | + (Σ-comp₁ : Π (A : U) (B : A → U) (a : A) (b: B a), Path A a (Σ-elim₁ A B (Σ-ctor₁ A B a b))) |
| 55 | + (Σ-comp₂ : Π (A : U) (B : A → U) (a : A) (b: B a), Path (B a) b (Σ-elim₂ A B (a, b))) |
| 56 | + (Σ-comp₃ : Π (A : U) (B : A → U) (p : Sigma ★ A B), Path (Sigma ★ A B) p (pr₁ ★ A B p, pr₂ ★ A B p)) |
| 57 | + (=-form : Π (A : U) (a : A), A → U) |
| 58 | + (=-ctor₁ : Π (A : U) (a : A), Path A a a) |
| 59 | + (=-elim₁ : Π (A : U) (a : A) (C: D A) (d: C a a (=-ctor₁ A a)) (y: A) (p: Path A a y), C a y p) |
| 60 | + (=-comp₁ : Π (A : U) (a : A) (C: D A) (d: C a a (=-ctor₁ A a)), Path (C a a (=-ctor₁ A a)) d (=-elim₁ A a C d a (=-ctor₁ A a))), 𝟏 |
64 | 61 |
|
65 | 62 | --- Self-aware MLTT: |
66 | | ---- Theorem. Id β-rule is derivable from generalized transport |
| 63 | +--- Theorem. J-β-rule is derivable from generalized transport |
67 | 64 |
|
68 | | -def internalizing (A : U) |
69 | | - : MLTT A |
70 | | - := ( Pi A, Π-lambda A, Π-apply A, Π-β A, Π-η A, |
71 | | - Sigma A, pair A, pr₁ A, pr₂ A, Σ-β₁ A, Σ-β₂ A, Σ-η A, |
72 | | - Path A, idp A, J A, J-β A, |
73 | | - ★ |
| 65 | +def internalizing : MLTT |
| 66 | + := ( Pi ★, Π-lambda ★, Π-apply ★, Π-β ★, Π-η ★, |
| 67 | + Sigma ★, pair ★, pr₁ ★, pr₂ ★, Σ-β₁ ★, Σ-β₂ ★, Σ-η ★, |
| 68 | + Path-1 ★, idp-1 ★, J-1 ★, J-β ★, ★ |
74 | 69 | ) |
0 commit comments