Type Theory 
And Practical Application
The Institute for Advanced Study in Princeton, in my opinion, has ruined more good scientists than any institution has 
cr...
Vladimir Voevodsky 
• Cutting-edge Math so complex probability 
of mistake in any given proof very high 
• Automated proof...
Frege  Martin-Löf  Voevodsky 
• Gottlob Frege, active 1879 – 1923 
works in logic, foundations of arithmetic, and philos...
“The relevance of theory to practical work is it shows us what is possible.”
“A language is type safe if running a program in the language cannot 
result in … the underlying operating system catching...
Harper’s Computer Science Holy Trinity 
• Category Theory 
• Type Theory 
• Proof Theory
Today’s State of the Art 
• Functional programming 
• Type systems 
largely missing dependent types 
Idris is a notable ex...
Every-thing has a type 
• Objects are types 
• Propositions are types 
• Functions are types 
• Proofs are types
A theory of rules and no axioms 
(For our purposes. There are 2 axioms in higher homotopy type theory) 
• “axioms” appear ...
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 b...
Equality has special cases 
• Judgmental equality a :≡ b is a “witness” 
• p : a =A b is a proposition (and of course a ty...
Universes and families 
• Universe : a type whose elements are types 
• U0 : U1 : U2 : … 
• Every type belongs to some uni...
0 : U the type that is not 
• False, ⊥, bottom 
• You cannot construct it 
• Hence it does not exist. Anything can derive ...
1 : U unit 
• True, ⊤, top, () 
• Always the same 
one-valued logic 
• C family of languages oddly names this type “void”
2 : U boolean 
• 2-valued logic 
highest n-valued fully consistent logic 
• Can be derived as a special case of coproduct ...
Infinite types 
• E.g. Natural numbers 
which have a special place in practical application 
• Defined recursively
A  B function type 
• Signature matters to define type 
not the body of function
A + B : U Coproduct type 
• a.k.a. Summation type 
F# discriminated union 
• To construct the function A + B  C 
requires...
Brief tangent on introducing types 
• Formation rule 
e.g. you can form A  B when A is a type and B is a type 
• Introduc...
A x B : U Product type 
• Tuple, Cartesian product
Lots of other types 
• E.g. Lists 
which of course are defined recursively 
• Not so important from the standpoint of theo...
EXCEPT…
Π(x:A)B(x) Dependent Functions 
• Type of output depends on element of input 
not the type of input 
hence, not just a “pa...
Σ(x:A)B(x) Dependent pair type 
• Second element depends on a dependently typed function on first 
• Example: 
1, 10 
2, “...
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 i...
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)
IdA(a,b) Indentity function 
• Has special importance in type theory 
IdA(a,b) type representing proposition of equality 
...
Fundamental “Mathy” Properties of Path 
• Reflexivity 
constant path, e.g. identity 
• Symmetry 
both directions of a “pro...
Operations on paths 
• Identity (fundamental compositional element) 
• Associativity 
(p ∙ q) ∙ r = p ∙ (q ∙ r) 
• Transit...
…but equalities are proofs 
• So paths are proofs p : x =A y 
• The equivalence of 2 paths (proofs) is called a homotopy 
...
The Fundamental Theorem of Type Theory 
• Induction principal for identity types 
• Similar to 2 step number theory induct...
Connection to computability 
• Constructive logic confines itself to that which can be effectively 
constructed by computa...
Coming up for air (gasp, gasp) 
• This is where type checking comes in 
• Construction is a proof of a type 
• Type checki...
CORRECTNESS! 
“The basic principal of the logic of type theory is that a proposition 
is not merely true or false, but rat...
Theorem Provers 
• Agda 
type checking 
• Coq 
proof strategies
Idris 
“…because Idris has full dependent types, the total subset of the 
language can be used freely in the type system…”...
Further Study 
• http://siek.blogspot.com/2012/07/crash-course-on-notation-in-programming.html 
• Simply-typed Lambda Calc...
Type Theory and Practical Application
Upcoming SlideShare
Loading in...5
×

Type Theory and Practical Application

1,605

Published on

Overview of Type Theory, emphasizing Homotopy Type Theory, and introduction to practical application.

Published in: Software, Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,605
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
17
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Type Theory and Practical Application

  1. 1. Type Theory And Practical Application
  2. 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. 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. 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. 5. “The relevance of theory to practical work is it shows us what is possible.”
  6. 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
  7. 7. Harper’s Computer Science Holy Trinity • Category Theory • Type Theory • Proof Theory
  8. 8. 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
  9. 9. Every-thing has a type • Objects are types • Propositions are types • Functions are types • Proofs are types
  10. 10. 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
  11. 11. 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
  12. 12. 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)
  13. 13. 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
  14. 14. 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
  15. 15. 1 : U unit • True, ⊤, top, () • Always the same one-valued logic • C family of languages oddly names this type “void”
  16. 16. 2 : U boolean • 2-valued logic highest n-valued fully consistent logic • Can be derived as a special case of coproduct / summation type
  17. 17. Infinite types • E.g. Natural numbers which have a special place in practical application • Defined recursively
  18. 18. A  B function type • Signature matters to define type not the body of function
  19. 19. 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
  20. 20. 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
  21. 21. A x B : U Product type • Tuple, Cartesian product
  22. 22. 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…
  23. 23. EXCEPT…
  24. 24. Π(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
  25. 25. Σ(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”
  26. 26. 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
  27. 27. 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)
  28. 28. 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)
  29. 29. Fundamental “Mathy” Properties of Path • Reflexivity constant path, e.g. identity • Symmetry both directions of a “proof” • Transitivity concatenation of paths
  30. 30. Operations on paths • Identity (fundamental compositional element) • Associativity (p ∙ q) ∙ r = p ∙ (q ∙ r) • Transitivity p ∙ p-1 = Id(p)
  31. 31. …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)
  32. 32. 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…”
  33. 33. 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
  34. 34. Coming up for air (gasp, gasp) • This is where type checking comes in • Construction is a proof of a type • Type checking proves…
  35. 35. 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
  36. 36. Theorem Provers • Agda type checking • Coq proof strategies
  37. 37. 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
  38. 38. 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
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×