/
fin.anders
71 lines (62 loc) Β· 3.22 KB
/
fin.anders
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{- Finite Set Type: https://anders.groupoid.space/foundations/mltt/fin/
- Fin.
HoTT 1.9 Exercise
Copyright (c) Groupoid Infinity, 2014-2023. -}
module fin where
import lib/foundations/mltt/nat
import lib/foundations/mltt/either
def Fin : β β U := β-iter U π (+ π)
def fzero (n : β) : Fin (succ n) := (0β, β
)
def fsucc (n : β) (m : Fin n) : Fin (succ n) := (1β, m)
def Fin-ind (T : Ξ (n : β), Fin n β U)
(z : Ξ (n : β), T (succ n) (fzero n))
(s : Ξ (n : β) (x : Fin n), T n x β T (succ n) (fsucc n x))
(m : β) (x : Fin m) : T m x
:= β-ind (Ξ» (k : β), Ξ (x : Fin k), T k x)
(Ξ» (x : π), indβ (T zero x) x)
(Ξ» (k : β) (f : Ξ (x : Fin k), T k x),
+-ind π (Fin k) (T (succ k))
(indβ (Ξ» (w : π), T (succ k) (0β, w)) (z k))
(Ξ» (w : Fin k), s k w (f w))) m x
def π : U := + π π
def 0β : π := inl π π β
def 1β : π := inr π π 0β
def 2β : π := inr π π 1β
def indβ (C : π β U) (cβ : C 0β) (cβ : C 1β) (cβ : C 2β) : Ξ (x : π), C x
:= +-ind π π C (indβ (Ξ» (x : π), C (0β, x)) cβ) (indβ (Ξ» (x : π), C (1β, x)) cβ cβ)
def π : U := + π π
def 0β : π := inl π π 0β
def 1β : π := inl π π 1β
def 2β : π := inr π π 0β
def 3β : π := inr π π 1β
def indβ (C : π β U) (cβ : C 0β) (cβ : C 1β) (cβ : C 2β) (cβ : C 3β) : Ξ (x : π), C x
:= +-ind π π C (indβ (Ξ» (x : π), C (0β, x)) cβ cβ) (indβ (Ξ» (x : π), C (1β, x)) cβ cβ)
def π : U := + π π
def 0β
: π := inl π π 0β
def 1β
: π := inl π π 1β
def 2β
: π := inr π π 0β
def 3β
: π := inr π π 1β
def 4β
: π := inr π π 2β
def indβ
(C : π β U) (cβ : C 0β
) (cβ : C 1β
) (cβ : C 2β
) (cβ : C 3β
) (cβ : C 4β
) : Ξ (x : π), C x
:= +-ind π π C (indβ (Ξ» (x : π), C (0β, x)) cβ cβ) (indβ (Ξ» (x : π), C (1β, x)) cβ cβ cβ)
def π : U := + π π
def 0β : π := inl π π 0β
def 1β : π := inl π π 1β
def 2β : π := inl π π 2β
def 3β : π := inr π π 0β
def 4β : π := inr π π 1β
def 5β : π := inr π π 2β
def indβ (C : π β U) (cβ : C 0β) (cβ : C 1β) (cβ : C 2β)
(cβ : C 3β) (cβ : C 4β) (cβ
: C 5β) : Ξ (x : π), C x
:= +-ind π π C (indβ (Ξ» (x : π), C (0β, x)) cβ cβ cβ)
(indβ (Ξ» (x : π), C (1β, x)) cβ cβ cβ
)
def π : U := + π π
def 0β : π := inl π π 0β
def 1β : π := inl π π 1β
def 2β : π := inl π π 2β
def 3β : π := inr π π 0β
def 4β : π := inr π π 1β
def 5β : π := inr π π 2β
def 6β : π := inr π π 3β
def indβ (C : π β U) (cβ : C 0β) (cβ : C 1β) (cβ : C 2β) (cβ : C 3β) (cβ : C 4β) (cβ
: C 5β) (cβ : C 6β) : Ξ (x : π), C x
:= +-ind π π C (indβ (Ξ» (x : π), C (0β, x)) cβ cβ cβ) (indβ (Ξ» (x : π), C (1β, x)) cβ cβ cβ
cβ)