2. The Institute for Advanced Study in Princeton, in my opinion, has ruined more good scientists than any institution has
created, judged by what they did before they came and judged by what they did after. Not that they weren't good
afterwards, but they were superb before they got there and were only good afterwards.
-- Richard Hamming
3. Vladimir Voevodsky
⢠Cutting-edge Math so complex probability
of mistake in any given proof very high
⢠Automated proof checking the present
and future of Math
⢠Video:
Univalent Foundations: New
Foundations of Mathematics
http://video.ias.edu/node/6395
4. Frege ď Martin-LĂśf ď Voevodsky
⢠Gottlob Frege, active 1879 â 1923
works in logic, foundations of arithmetic, and philosophy
⢠Per Martin-LÜf
An Intuitionistic Theory of Types, 1975
⢠Vladimir Voevodsky
A very short note on the homotopy Îť-calculus, 2006
⢠Institute for Advanced Study
Homotopy Type Theory: Univalent Foundation of Mathematics, 2013
a.k.a. The HoTT Book
5. âThe relevance of theory to practical work is it shows us what is possible.â
6. âA language is type safe if running a program in the language cannot
result in ⌠the underlying operating system catching the error, not the
language itself. It is the untrapped errors that hackers take advantage
of to break into computer systems. [I]t's a good idea to only run code
that is in a type safe language!â
-- Jeremy Siek
http://siek.blogspot.com/2012/08/type-safety-in-five-easy-lemmas.html
9. Todayâs State of the Art
⢠Functional programming
⢠Type systems
largely missing dependent types
Idris is a notable exception
⢠Theorem provers (Coq, Agda, F7, F*)
still largely in the research stage
testing is poor manâs substitute for proof
practical security research (e.g. Heart bleed bug in Open SSL)
proving assertions about language compiler
10. Every-thing has a type
⢠Objects are types
⢠Propositions are types
⢠Functions are types
⢠Proofs are types
11. A theory of rules and no axioms
(For our purposes. There are 2 axioms in higher homotopy type theory)
⢠âaxiomsâ appear when we introduce concrete types
⢠The game is to manipulate concrete types and elements with the rules
⢠i.e. Type Theory provides an algebra over types
12. a:A âa is of type A â
⢠Type theory is a deductive system based on 2 forms of judgment
⢠âa is of type A â is the most basic form of judgment
⢠Construction of a proposition is a proof in intuitionistic mathematics
13. Equality has special cases
⢠Judgmental equality a :⥠b is a âwitnessâ
⢠p : a =A b is a proposition (and of course a type)
⢠p-1 : b =A a is a different type (we will come back to this)
14. Universes and families
⢠Universe : a type whose elements are types
⢠U0 : U1 : U2 : âŚ
⢠Every type belongs to some universe A : Ui
⢠A family of types: type B varying over a type A
B : A ď U
indicates the universe U is the codomain
note this is a simple function signature
15. 0 : U the type that is not
⢠False, âĽ, bottom
⢠You cannot construct it
⢠Hence it does not exist. Anything can derive from it.
ex falso quodlibit
16. 1 : U unit
⢠True, â¤, top, ()
⢠Always the same
one-valued logic
⢠C family of languages oddly names this type âvoidâ
17. 2 : U boolean
⢠2-valued logic
highest n-valued fully consistent logic
⢠Can be derived as a special case of coproduct / summation type
18. Infinite types
⢠E.g. Natural numbers
which have a special place in practical application
⢠Defined recursively
19. A ď B function type
⢠Signature matters to define type
not the body of function
20. A + B : U Coproduct type
⢠a.k.a. Summation type
F# discriminated union
⢠To construct the function A + B ď C
requires the functions
A ď C
B ď C
21. Brief tangent on introducing types
⢠Formation rule
e.g. you can form A ď B when A is a type and B is a type
⢠Introduction rule (a.k.a. constructor)
e.g. functions have one constructor, Îť-abstraction
⢠Elimination rule
how to use elements of type, e.g. function application
⢠Uniqueness principle (optional)
unique maps into and out of type
22. A x B : U Product type
⢠Tuple, Cartesian product
23. Lots of other types
⢠E.g. Lists
which of course are defined recursively
⢠Not so important from the standpoint of theory
because we can construct them from what we haveâŚ
25. Î (x:A)B(x) Dependent Functions
⢠Type of output depends on element of input
not the type of input
hence, not just a âparameterized functionâ
⢠Normal function is a special case
resulting type family a constant type
26. ÎŁ(x:A)B(x) Dependent pair type
⢠Second element depends on a dependently typed function on first
⢠Example:
1, 10
2, âI am a stringâ
27. Logical operations, represented in types
⢠True 1
⢠False 0
⢠A and B A x B
⢠A or B A + B
⢠If A then B A ď B
⢠A if and only if B (A ď B) x (B ď A)
⢠Not A A ď 0
28. Predicate logic in type theory
⢠For all x
âx corresponds to Î (x:A)P(x)
⢠There exists x
âx corresponds to ÎŁ(x:A)P(x)
29. IdA(a,b) Indentity function
⢠Has special importance in type theory
IdA(a,b) type representing proposition of equality
p : a =A b
a = b (shorthand)
refl : Î (a:A)(a=Aa)reflexivity
⢠Homotopy Type Theory â
there is a path between equals
reflexivity is an infinitesimally short path from self to self
paths are types (inverse path is not the same type)
30. Fundamental âMathyâ Properties of Path
⢠Reflexivity
constant path, e.g. identity
⢠Symmetry
both directions of a âproofâ
⢠Transitivity
concatenation of paths
31. Operations on paths
⢠Identity (fundamental compositional element)
⢠Associativity
(p â q) â r = p â (q â r)
⢠Transitivity
p â p-1 = Id(p)
32. âŚbut equalities are proofs
⢠So paths are proofs p : x =A y
⢠The equivalence of 2 paths (proofs) is called a homotopy
⢠And equality of proofs can have proofs
p' : p =x=Ay q Paths between paths (i.e. equality of paths)
⢠And these are all types
⢠Itâs turtles all the way down (equivalences of paths)
33. The Fundamental Theorem of Type Theory
⢠Induction principal for identity types
⢠Similar to 2 step number theory induction (prove base case, prove a step)
⢠Except there is only one step to prove
⢠To prove a statement (or construction an object) that depends on path
identity,
p: x = A y
it suffices to prove (or construct) in the special case where x and y are
the same. p is thus the reflexivity element.
⢠âby induction it suffices to assumeâŚâ
34. Connection to computability
⢠Constructive logic confines itself to that which can be effectively
constructed by computation
⢠It does not include Law of Excluded Middle or Proof by Contradiction
⢠In general the tautologies of classical logic involving NOT cannot be
constructed
35. Coming up for air (gasp, gasp)
⢠This is where type checking comes in
⢠Construction is a proof of a type
⢠Type checking provesâŚ
36. CORRECTNESS!
âThe basic principal of the logic of type theory is that a proposition
is not merely true or false, but rather can be seen as the collection
of all possible witnesses of its truth.â
-- The HoTT Book, p. 53
38. Idris
ââŚbecause Idris has full dependent types, the total subset of the
language can be used freely in the type systemâŚâ
⢠Idris: General Purpose Programming with Dependent Types
https://www.youtube.com/watch?v=vkIlW797JN8
⢠https://github.com/idris-lang/Idris-dev/wiki/Manual
39. Further Study
⢠http://siek.blogspot.com/2012/07/crash-course-on-notation-in-programming.html
⢠Simply-typed Lambda Calculus
⢠Hindley-Milner type inference
⢠Software Foundations
Benjamin C. Pierce, et al.
http://www.cis.upenn.edu/~bcpierce/sf/
⢠Types and Programming Languages (2002)
Benjamin C. Pierce
⢠Oregon Programming Languages Summer School