Current section
Files
Jump to
Current section
Files
priv/agda/foundations/univalent.agda
module univalent where
Β¬ (A : Set) = A β π
βα΅ (A B C: Set) : Set = (B β C) β (A β B) β (A β C)
β (A B C : Set) : βα΅ A B C = Ξ» (g : B β C) (f : A β B) (x : A), g (f x)
idα΅ (A : Set) : Set = A β A
id (A : Set) (a : A) : A = a
const (A B : Set) : A β B β A = Ξ» (a : A) (b : B), a
constβ (A : Set) : A β π = const π A β
LineP (A : I β Set) : V = Ξ (i : I), A i
--- Path Space
Path (A : Set) (x y : A) : Set = PathP (<_> A) x y
idp (A : Set) (x : A) : Path A x x = <_> x
singl (A: Set) (a: A): Set = Ξ£ (x: A), Path A a x
eta (A: Set) (a: A): singl A a = (a, idp A a)
sym (A: Set) (a b : A) (p : Path A a b) : Path A b a = <i> p @ -i
contr (A : Set) (a b : A) (p : Path A a b) : Path (singl A a) (eta A a) (b, p) = <i> (p @ i, <j> p @ i /\ j)
isContr (A: Set) : Set = Ξ£ (x: A), Ξ (y: A), Path A x y
isContrSingl (A : Set) (a : A) : isContr (singl A a) = ((a,idp A a),(\ (z:singl A a), contr A a z.1 z.2))
cong (A B : Set) (f : A β B) (a b : A) (p : Path A a b) : Path B (f a) (f b) = <i> f (p @ i)
ap (A: Set) (a x: A) (B: A β Set) (f: A β B a) (b: B a) (p: Path A a x): Path (B a) (f a) (f x) = <i> f (p @ i)
mapOnPath (A: Set) (B: A β Set) (a: A) (f: A β B a) (b: B a) (x: A) (p: Path A a x): Path (B a) (f a) (f x) = <i> f (p @ i)
inv (A: Set) (a b: A) (p: Path A a b): Path A b a = <i> p @ -i
Path-Ξ· (A : Set) (x y : A) (p : Path A x y) : Path (Path A x y) p (<i> p @ i) = <_> p
idp-left (A : Set) (x y : A) (p : Path A x y) : Path (Path A x x) (<_> x) (<_> p @ 0) = <_ _> x
idp-right (A : Set) (x y : A) (p : Path A x y) : Path (Path A y y) (<_> y) (<_> p @ 1) = <_ _> y
sym-sym-eq-idp (A : Set) (x y : A) (p : Path A x y) : Path (Path A x y) p (sym A y x (sym A x y p)) = <_> p
isProp (A : Set) : Set = Ξ (a b : A), Path A a b
isSet (A : Set) : Set = Ξ (a b : A) (a0 b0 : Path A a b), Path (Path A a b) a0 b0
isGroupoid (A : Set) : Set = Ξ (a b : A) (x y : Path A a b) (i j : Path (Path A a b) x y), Path (Path (Path A a b) x y) i j
SET : Setβ = Ξ£ (X : Set), isSet X
Ξ©' : Setβ = Ξ£ (A : Set), isProp A
section (A B : Set) (f : A -> B) (g : B -> A) : Set = Ξ (b : B), Path B (f (g b)) b
retract (A B : Set) (f : A -> B) (g : B -> A) : Set = Ξ (a : A), Path A (g (f a)) a
hmtpy (A : Set) (x y : A) (p : Path A x y) : Path (Path A x x) (<_> x) (<i> p @ i /\ -i) = <j i> p @ j /\ i /\ -i
plam (A : Set) (f : I β A) : Path A (f 0) (f 1) = <i> f i
elim (A : Set) (a b : A) (p : Path A a b) : I β A = Ξ» (i : I), p @ i
plam-elim (A : Set) (f : I β A) : Id (I β A) (elim A (f 0) (f 1) (plam A f)) f = ref f
elim-plam (A : Set) (a b : A) (p : Path A a b) : Path (Path A a b) (plam A (elim A a b p)) p = <_> p
--- Path as [Left] Identity System, Computational Properties
transport (A B: Set) (p : PathP (<_> Set) A B) (a: A): B = transp p 0 a
trans_comp (A : Set) (a : A) : Path A a (transport A A (<i> A) a) = <j> transp (<_> A) -j a
subst (A : Set) (P : A -> Set) (a b : A) (p : Path A a b) (e : P a) : P b = transp (<i> P (p @ i)) 0 e
D (A : Set) : Setβ β Ξ (x y : A), Path A x y β Set
J (A: Set) (x: A) (C: D A) (d: C x x (idp A x)) (y: A) (p: Path A x y): C x y p
= 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
subst-comp (A: Set) (P: A β Set) (a: A) (e: P a): Path (P a) e (subst A P a a (idp A a) e) = trans_comp (P a) e
J-Ξ² (A : Set) (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))
= subst-comp (singl A a) (\ (z: singl A a), C a (z.1) (z.2)) (eta A a) d
--- DNF solver
β (i : I) = i β¨ -i
β-eq-neg-β (i : I) : Id I (β i) (β -i) = ref (β i)
min (i j : I) = i β§ j
max (i j : I) = i β¨ j
β (i j : I) : I = (i β§ -j) β¨ (-i β§ j)
β-comm (i j : I) : Id I (β i j) (β j i) = ref (β i j)
β§-comm (i j : I) : Id I (i β§ j) (j β§ i) = ref (i β§ j)
β¨-comm (i j : I) : Id I (i β¨ j) (j β¨ i) = ref (i β¨ j)
Β¬-of-β§ (i j : I) : Id I -(i β§ j) (-i β¨ -j) = ref -(i β§ j)
Β¬-of-β¨ (i j : I) : Id I -(i β¨ j) (-i β§ -j) = ref -(i β¨ j)
β§-distrib-β¨ (i j k : I) : Id I ((i β¨ j) β§ k) ((i β§ k) β¨ (j β§ k)) = ref ((i β¨ j) β§ k)
β¨-distrib-β§ (i j k : I) : Id I ((i β§ j) β¨ k) ((i β¨ k) β§ (j β¨ k)) = ref ((i β§ j) β¨ k)
β§-assoc (i j k : I) : Id I (i β§ (j β§ k)) ((i β§ j) β§ k) = ref (i β§ (j β§ k))