Cubical Type Theory · 2014. 9. 17. · Euclid’s postulates 1. To draw a straight line from any...

Preview:

Citation preview

Cubical Type Theory

Dan LicataWesleyan University

Guillaume BrunerieUniversité de Nice Sophia Antipolis

Synthetic geometry

2

Euclid’s postulates1. To draw a straight line from any point

to any point.2. To produce a finite straight line continuously

in a straight line.3. To describe a circle with any center and distance.4. That all right angles are equal to one another.5. Given a line and a point not on it, there is exactly

one line through the point that does not intersect the line

Synthetic geometry

2

Euclid’s postulatesCartesian

1. To draw a straight line from any pointto any point.

2. To produce a finite straight line continuouslyin a straight line.

3. To describe a circle with any center and distance.4. That all right angles are equal to one another.5. Given a line and a point not on it, there is exactly

one line through the point that does not intersect the line

Synthetic geometry

2

Euclid’s postulatesCartesian

models1. To draw a straight line from any pointto any point.

2. To produce a finite straight line continuouslyin a straight line.

3. To describe a circle with any center and distance.4. That all right angles are equal to one another.5. Given a line and a point not on it, there is exactly

one line through the point that does not intersect the line

Synthetic geometry

2

Euclid’s postulatesCartesian

models1. To draw a straight line from any pointto any point.

2. To produce a finite straight line continuouslyin a straight line.

3. To describe a circle with any center and distance.4. That all right angles are equal to one another.

Synthetic geometry

2

Euclid’s postulatesCartesian

models

Spherical

1. To draw a straight line from any pointto any point.

2. To produce a finite straight line continuouslyin a straight line.

3. To describe a circle with any center and distance.4. That all right angles are equal to one another.

Synthetic geometry

2

Euclid’s postulatesCartesian

models

Spherical

1. To draw a straight line from any pointto any point.

2. To produce a finite straight line continuouslyin a straight line.

3. To describe a circle with any center and distance.4. That all right angles are equal to one another.5. Two distinct lines meet at two antipodal points.

category theory homotopy theory

type theory

Homotopy type theory

3

[Awodey,Warren,Voevodsky,Streicher,Hofmann Lumsdaine,Gambino,Garner,van den Berg]

higher

Homotopy type theory is a synthetic theory

of spaces

4

Types as spaces

5

M N

α

Types as spaces

5

M N

α

type A is a space

Types as spaces

5

M N

α

programsM:A

are points

type A is a space

Types as spaces

5

M N

α

programsM:A

are points

type A is a space

proofs of equality

α : M =A Nare paths

Types as spaces

5

M N

α

programsM:A

are points

type A is a space

proofs of equality

α : M =A Nare paths

path operations

Types as spaces

5

M N

αid

programsM:A

are points

type A is a space

proofs of equality

α : M =A Nare paths

path operations

id : M = M (refl)

Types as spaces

5

M N

αidα

programsM:A

are points

type A is a space

proofs of equality

α : M =A Nare paths

path operations

id : M = M (refl)α-1 : N = M (sym)-1

Types as spaces

5

M N

α

P

β

idα

programsM:A

are points

type A is a space

proofs of equality

α : M =A Nare paths

path operations

id : M = M (refl)α-1 : N = M (sym)β o α : M = P (trans)

-1

Homotopy

6

Deformation of one path into another

α

β

Homotopy

6

Deformation of one path into another

α

β

Homotopy

6

Deformation of one path into another

α

β

= 2-dimensional path between paths

Homotopy

6

Deformation of one path into another

α

β

= 2-dimensional path between paths

α =x=y βδ :

Types as spaces

7

M N

α

P

β

idα

programsM:A

are points

type A is a space

proofs of equality

α : M =A Nare paths

path operations

id : M = M (refl)α-1 : N = M (sym)β o α : M = P (trans)

-1

homotopies

ul : id o α =M=N αil : α-1 o α =M=M idasc : γ o (β o α) =M=P (γ o β) o α

Equality type

8

x =A yp :

p1 =x=y p2? :

x : A

Equality type

8

x =A yp :

p1 =x=y p2? :

x : A

Equality type

8

x =A yp :

p1 =x=y p2? :

x : A

Proof-relevant equality

9

x =A yp :

p1 =x=y p2q :

x : A

Proof-relevant equality

9

x =A yp :

p1 =x=y p2q :

x : A

q1 =p1=p2 q2

Proof-relevant equality

9

x =A yp :

p1 =x=y p2q :

x : A

q1 =p1=p2 q2r :

Proof-relevant equality

9

x =A yp :

p1 =x=y p2q :

x : A

q1 =p1=p2 q2r :

...

Homotopy groups of spheres

10

kth homotopy group

n-di

men

sion

al s

pher

e

[image from wikipedia]

Univalence

11

[Voevodsky]

Univalence

11

Equivalence of types is a generalization to spaces of bijection of sets

[Voevodsky]

Univalence

11

Equivalence of types is a generalization to spaces of bijection of sets

Univalence axiom, roughly:all structures/properties respect equivalence

[Voevodsky]

Univalence

12

Transporting along an equality is ageneric program that lifts equivalences

Can do parametricity-like reasoningabout modules

Provides “right” equality for mathematical structures (groups, categories, …)

Higher inductive types

13

New way of forming types:

Inductive type specified by generatorsnot only for points (elements), but also for paths

[Bauer,Lumsdaine,Shulman,Warren]

14

Subsume quotient types, which have been problematic in intensional type theory

Direct constructive definitions of spaces and other mathematical concepts

Some nascent programming applications

Higher inductive types

Homotopy in HoTT

15

π1(S1) = �

πk<n(Sn) = 0

π2(S2) = � Hopf fibration

π3(S2) = �

πn(Sn) = �

Freudenthal

π4(S3) = �?

James Construction

K(G,n)Blakers-Massey

Van Kampen

Covering spaces

Whiteheadfor n-types

Cohomology axioms

[Brunerie, Cavallo, Finster, Hou, Licata, Lumsdaine, Shulman]

T2 = S1 × S1

Mayer-Vietoris

A patch theory as a HIT

16

Generator forequality of equality

R:Type

a↔b@i

doc[n]

compressed

points describe repository contents

paths are patches

gzip

doc[n]

doc[n]

doc[n]

doc[n]a↔b@i

c↔d@j

c↔d@j

a↔b@i

i≠j

paths between paths are equations between patches

Computation

17

Bezem,Coquand,Huber, 2013 gave a constructive model of type theory in Kan cubical sets; evaluator based on this

This work: a syntactic type theorybased on these ideas

[Coquand,Huber,Bezem,Barras, Licata,Harper,Brunerie,Shulman, Altenkirch,Kaposi,Polansky…]

Everything Respects Equivalence

18

19

α : A ≃ Bα’ : A’ ≃ B’α×α’ : A × A’ ≃ B × B’

Respect Equivalence

19

α : A ≃ Bα’ : A’ ≃ B’α×α’ : A × A’ ≃ B × B’

Respect Equivalence

α×α’(a:A,a’:A’) = (α a, α’ a’)

19

α : A ≃ Bα’ : A’ ≃ B’α×α’ : A × A’ ≃ B × B’

Respect Equivalence

α×α’(a:A,a’:A’) = (α a, α’ a’)

(α×α’)-1(b:B,b’:B’) = (α-1 b, α’-1 b’)

20

Respect Equivalence

α : A ≃ Bα’ : A’ ≃ B’α$α’ : A $ A’ ≃ B $ B’

20

Respect Equivalence

α$α’(f:A $ A’) = α’ . f . α-1

α : A ≃ Bα’ : A’ ≃ B’α$α’ : A $ A’ ≃ B $ B’

20

Respect Equivalence

α$α’(f:A $ A’) = α’ . f . α-1

(α$α’)-1(g:B $ B’) = α’-1 . g . α

α : A ≃ Bα’ : A’ ≃ B’α$α’ : A $ A’ ≃ B $ B’

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalence

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalencep0 : α a0 =B b0

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalencep0 : α a0 =B b0p0 : a0 =A α-1 b0

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalence

p : a0 =A a1 �

p0 : α a0 =B b0p0 : a0 =A α-1 b0

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalence

b0 b1

α a0 α a1

p0 p1p : a0 =A a1 �

B

p0 : α a0 =B b0p0 : a0 =A α-1 b0

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalence

b0 b1

α a0 α a1

p0 p1p : a0 =A a1 �

B

p0 : α a0 =B b0p0 : a0 =A α-1 b0

α p : α a0 =B α a1

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalence

b0 b1

α a0 α a1

p0 p1

α p

p : a0 =A a1 �

B

p0 : α a0 =B b0p0 : a0 =A α-1 b0

α p : α a0 =B α a1

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalence

b0 b1

α a0 α a1

p0 p1

α p

p : a0 =A a1 �

B

p0 : α a0 =B b0p0 : a0 =A α-1 b0

α p : α a0 =B α a1

21

α : A ≃ Bp0 : a0 =α b0 p1 : a1 =α b1 p0 =α p1 : a0 =A a1 ≃ b0 =B b1

Respect Equivalence

b0 b1

α a0 α a1

p0 p1

α p

p : a0 =A a1 �

B

p0 : α a0 =B b0p0 : a0 =A α-1 b0

! p0 ; α p ; p1

α p : α a0 =B α a1

Missing Sides

22

23

p : x =A y p’ : x’ =A’ y’ (p,p’) : (x,x’) =A×A’ (y,y’)

23

p : x =A y p’ : x’ =A’ y’ (p,p’) : (x,x’) =A×A’ (y,y’)

(x,x’)(t,t’)

(y,y’)

(z,z’)

(w,w’)

(l,l’) (r,r’)A×A’

23

p : x =A y p’ : x’ =A’ y’ (p,p’) : (x,x’) =A×A’ (y,y’)

(x,x’)(t,t’)

(y,y’)

(z,z’)

(w,w’)

(l,l’) (r,r’)A×A’

xt

y

z

w

l rA

23

p : x =A y p’ : x’ =A’ y’ (p,p’) : (x,x’) =A×A’ (y,y’)

(x,x’)(t,t’)

(y,y’)

(z,z’)

(w,w’)

(l,l’) (r,r’)A×A’

xt

y

z

w

l rA

b

23

p : x =A y p’ : x’ =A’ y’ (p,p’) : (x,x’) =A×A’ (y,y’)

(x,x’)(t,t’)

(y,y’)

(z,z’)

(w,w’)

(l,l’) (r,r’)A×A’

xt

y

z

w

l rA

b

x’t’

y’

z’

w’

l’ r’A’

23

p : x =A y p’ : x’ =A’ y’ (p,p’) : (x,x’) =A×A’ (y,y’)

(x,x’)(t,t’)

(y,y’)

(z,z’)

(w,w’)

(l,l’) (r,r’)A×A’

xt

y

z

w

l rA

b

x’t’

y’

z’

w’

l’ r’A’

b’

23

p : x =A y p’ : x’ =A’ y’ (p,p’) : (x,x’) =A×A’ (y,y’)

(x,x’)(t,t’)

(y,y’)

(z,z’)

(w,w’)

(l,l’) (r,r’)A×A’

xt

y

z

w

l rA

b

x’t’

y’

z’

w’

l’ r’A’

b’

(b,b’)

24

x:A ⊢ p : f x =A’ g x λx.p : f =A$A’ g

24

x:A ⊢ p : f x =A’ g x λx.p : f =A$A’ g

ft

g

h

k

l rA$A’

24

x:A ⊢ p : f x =A’ g x λx.p : f =A$A’ g

ft

g

h

k

l rA$A’

f xt x

g x

h x

k x

l x r xA’

24

x:A ⊢ p : f x =A’ g x λx.p : f =A$A’ g

ft

g

h

k

l rA$A’

f xt x

g x

h x

k x

l x r xA’

b[x]

24

x:A ⊢ p : f x =A’ g x λx.p : f =A$A’ g

ft

g

h

k

l rA$A’

f xt x

g x

h x

k x

l x r xA’

b[x]λx.b

25

pt

q

u

v

l ra0 =A a1

p q u v : a0 =A a1l : p =a0=a1 q r : u =a0=a1 vt : p =a0=a1 u

25

pt

q

u

v

l ra0 =A a1

p q u v : a0 =A a1l : p =a0=a1 q r : u =a0=a1 vt : p =a0=a1 u

p ql

a0

a1 a1

a0refl

refl

25

pt

q

u

v

l ra0 =A a1

p q u v : a0 =A a1l : p =a0=a1 q r : u =a0=a1 vt : p =a0=a1 u

p ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

25

pt

q

u

v

l ra0 =A a1

p q u v : a0 =A a1l : p =a0=a1 q r : u =a0=a1 vt : p =a0=a1 u

p ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

26

pt

q

u

v

l ra0 =A a1

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

a0

p

26

pt

q

u

v

l ra0 =A a1

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

a0

p

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l

q

a0

p

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l t

q

a0

p

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l t

q

a0

r

v

p

u

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l t

q

a0

a0

a0a0

r

v

p

a0

u

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l t

q

a0

a0

a0a0

r

v

p

a0

u

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l t

q

a0

a0

a0a0

a1

r

v

p

a0

a1

a1a1

u

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l t

q

a0

a0

a0a0

a1

r

v

p

a0

a1

a1a1

u

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l t

q

a0

a0

a0a0

a1

r

v

p

a0

a1

a1a1

ub

26

pt

q

u

v

l ra0 =A a1p

ql

a0

a1 a1

a0refl

refl

p ut

a0

a1 a1

a0refl

refl

u vr

a0

a1 a1

a0refl

refl

l t

q

a0

a0

a0a0

a1

r

v

p

a0

a1

a1a1

ub

b

Kan condition:any n-dimensional open box has a lid, and an inside

27

Cubes

28

Line

29

ll0 l1

Square

30

s

x

y

s00

s01 s11

s10

Square

30

s1-

s-0

s

x

y

s-1

s0-

s00

s01 s11

s10

Square with its boundary

31

s

x

y

Square with its boundary

31

s

x

y

s<0/x>

Square with its boundary

31

s<1/x>s

x

y

s<0/x>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<0/x>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<1/y>

s<0/x>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<1/y>

s<0/x>

s<0/x><0/y>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<1/y>

s<0/x>

s<0/x><1/y>

s<0/x><0/y>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<1/y>

s<0/x>

s<1/x><0/y>

s<0/x><1/y>

s<0/x><0/y>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<0/y><1/x>

Square with its boundary

31

s<1/x>

s<0/y>

s

x

y

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<0/y><1/x>

substitutions for independent variables commute

Degeneracies

32

x

y

a

Degeneracies

32

x

y

aa↑x

a a

Degeneracies

32

x

y

a↑x <0/x> = aa

a↑xa a

Degeneracies

32

x

y

a↑x <0/x> = aa

a↑xa a a↑x <1/x> = a

Degeneracies

32

x

y

a↑x <0/x> = aa

a↑xa a a↑x <1/x> = a

p

Degeneracies

32

p

p↑y

x

y

p

a↑x <0/x> = aa

a↑xa a a↑x <1/x> = a

p

Degeneracies

32

p

p↑y

x

y

p

a↑x <0/x> = aa

a↑xa a a↑x <1/x> = a

pp↑y<0/y> = pp↑y<1/y> = p

Degeneracies

32

p

p↑y

x

y

p

a↑x <0/x> = aa

a↑xa a a↑x <1/x> = a

pp↑y<0/y> = pp↑y<1/y> = pp↑y<0/x> = (p<0/x>)↑y

Degeneracies

32

p

p↑y

x

y

p

a↑x <0/x> = aa

a↑xa a a↑x <1/x> = a

pp↑y<0/y> = pp↑y<1/y> = pp↑y<0/x> = (p<0/x>)↑yp↑y<1/x> = (p<1/x>)↑y

Degeneracies

32

p

p↑y

x

y

p

a↑x <0/x> = aa

a↑xa a a↑x <1/x> = a

pp↑y<0/y> = pp↑y<1/y> = pp↑y<0/x> = (p<0/x>)↑yp↑y<1/x> = (p<1/x>)↑y

a0a0↑ya1 a1↑y

Degeneracies

32

p

p↑y

x

y

p

a↑x <0/x> = a

substitution after weakening is identity, otherwise pushes inside

aa↑x

a a a↑x <1/x> = a

pp↑y<0/y> = pp↑y<1/y> = pp↑y<0/x> = (p<0/x>)↑yp↑y<1/x> = (p<1/x>)↑y

a0a0↑ya1 a1↑y

Dimensions

33

n-dimensional cube has n dimension names free

α-equivalence: make {x,…}-cube into {x’,...}-cube

Substitution of 0 or 1: faces

Weakening:degeneracy/reflexivity

[Coquand,Pitts]

Properties are cubical identities

34

s<1/x>

s<0/y>

s

s<1/y>

s<0/x>l

t

r

b

34

s<1/x>

s<0/y>

s

s<1/y>

s<0/x>

s<x↔y><0/x> = s<0/y>

l

t

r

b

34

s<1/x>

s<0/y>

s

s<1/y>

s<0/x>

s<x↔y><0/x> = s<0/y>

l

t

r

b

s<x↔y><0/y> = s<0/x>

34

s<1/x>

s<0/y>

s

s<1/y>

s<0/x>

s<x↔y><0/x> = s<0/y>

l

t

r

b

s<x↔y>t

l

b

r

s<x↔y><0/y> = s<0/x>

Symmetries

34

s<1/x>

s<0/y>

s

s<1/y>

s<0/x>

s<x↔y><0/x> = s<0/y>

l

t

r

b

s<x↔y>t

l

b

r

s<x↔y><0/y> = s<0/x>

35

s<1/x>

s<0/y>

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

35

s<1/x>

s<0/y>

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<x/y> is a line ({x}-cube)

35

s<x/y><0/x> = s<0/x><0/y>

s<1/x>

s<0/y>

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<x/y> is a line ({x}-cube)

35

s<x/y><0/x> = s<0/x><0/y>

s<1/x>

s<0/y>

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<x/y> is a line ({x}-cube)

35

s<x/y><0/x> = s<0/x><0/y>s<x/y><1/x> = s<1/x><1/y>

s<1/x>

s<0/y>

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<x/y> is a line ({x}-cube)

35

s<x/y><0/x> = s<0/x><0/y>s<x/y><1/x> = s<1/x><1/y>

s<1/x>

s<0/y>

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<x/y> is a line ({x}-cube)

35

s<x/y><0/x> = s<0/x><0/y>s<x/y><1/x> = s<1/x><1/y>

s<1/x>

s<0/y>

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<x/y> is a line ({x}-cube)

s<x/y>

Diagonals

35

s<x/y><0/x> = s<0/x><0/y>s<x/y><1/x> = s<1/x><1/y>

s<1/x>

s<0/y>

s<1/y>

s<0/x>

s<1/x><0/y>

s<1/x><1/y>s<0/x><1/y>

s<0/x><0/y>

s<x/y> is a line ({x}-cube)

s<x/y>

Dimensions

36

n-dimensional cube has n dimension names free

α-equivalence: make {x,...}-cube into {x’,...}-cube

Substitution of 0 or 1: faces

Weakening: degeneracy/reflexivity

Exchange: symmetry

Contraction: diagonal

[Coquand,Pitts]

Properties are cubical identities