SlideShare une entreprise Scribd logo
1  sur  39
Type Theory 
And Practical Application
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
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
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
“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 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
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 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
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 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
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
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)
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
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
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 / summation type
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 the functions 
A  C 
B  C
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
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 theory 
because we can construct them from what we have…
EXCEPT…
Π(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
Σ(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”
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
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 
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)
Fundamental “Mathy” Properties of Path 
• Reflexivity 
constant path, e.g. identity 
• Symmetry 
both directions of a “proof” 
• Transitivity 
concatenation of paths
Operations on paths 
• Identity (fundamental compositional element) 
• Associativity 
(p ∙ q) ∙ r = p ∙ (q ∙ r) 
• Transitivity 
p ∙ p-1 = Id(p)
…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)
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…”
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
Coming up for air (gasp, gasp) 
• This is where type checking comes in 
• Construction is a proof of a type 
• Type checking proves…
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
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…” 
• Idris: General Purpose Programming with Dependent Types 
https://www.youtube.com/watch?v=vkIlW797JN8 
• https://github.com/idris-lang/Idris-dev/wiki/Manual
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

Contenu connexe

Tendances

Tendances (20)

Lecture 7 cuda execution model
Lecture 7   cuda execution modelLecture 7   cuda execution model
Lecture 7 cuda execution model
 
Discrete Math Presentation(Rules of Inference)
Discrete Math Presentation(Rules of Inference)Discrete Math Presentation(Rules of Inference)
Discrete Math Presentation(Rules of Inference)
 
Predicates and Quantifiers
Predicates and QuantifiersPredicates and Quantifiers
Predicates and Quantifiers
 
Complexity theory
Complexity theory Complexity theory
Complexity theory
 
Dynamic programming
Dynamic programmingDynamic programming
Dynamic programming
 
Modular arithmetic
Modular arithmeticModular arithmetic
Modular arithmetic
 
Implicit parameters, when to use them (or not)!
Implicit parameters, when to use them (or not)!Implicit parameters, when to use them (or not)!
Implicit parameters, when to use them (or not)!
 
Efficient fx management with deep learning
Efficient fx management with deep learningEfficient fx management with deep learning
Efficient fx management with deep learning
 
03 convexfunctions
03 convexfunctions03 convexfunctions
03 convexfunctions
 
Quantum Geometry: A reunion of math and physics
Quantum Geometry: A reunion of math and physicsQuantum Geometry: A reunion of math and physics
Quantum Geometry: A reunion of math and physics
 
Simulated annealing
Simulated annealingSimulated annealing
Simulated annealing
 
Boost your productivity with Scala tooling!
Boost your productivity  with Scala tooling!Boost your productivity  with Scala tooling!
Boost your productivity with Scala tooling!
 
A brief introduction to Gaussian process
A brief introduction to Gaussian processA brief introduction to Gaussian process
A brief introduction to Gaussian process
 
Attention is all you need 설명
Attention is all you need 설명Attention is all you need 설명
Attention is all you need 설명
 
Contraction mapping
Contraction mappingContraction mapping
Contraction mapping
 
Single source stortest path bellman ford and dijkstra
Single source stortest path bellman ford and dijkstraSingle source stortest path bellman ford and dijkstra
Single source stortest path bellman ford and dijkstra
 
Functional Programming 101 with Scala and ZIO @FunctionalWorld
Functional Programming 101 with Scala and ZIO @FunctionalWorldFunctional Programming 101 with Scala and ZIO @FunctionalWorld
Functional Programming 101 with Scala and ZIO @FunctionalWorld
 
LINEAR RECURRENCE RELATIONS WITH CONSTANT COEFFICIENTS
 LINEAR RECURRENCE RELATIONS WITH CONSTANT COEFFICIENTS LINEAR RECURRENCE RELATIONS WITH CONSTANT COEFFICIENTS
LINEAR RECURRENCE RELATIONS WITH CONSTANT COEFFICIENTS
 
Predicates and quantifiers
Predicates and quantifiersPredicates and quantifiers
Predicates and quantifiers
 
Master method
Master method Master method
Master method
 

En vedette

En vedette (6)

Agricultural research for crop and livestock value chains development: The IP...
Agricultural research for crop and livestock value chains development: The IP...Agricultural research for crop and livestock value chains development: The IP...
Agricultural research for crop and livestock value chains development: The IP...
 
Tools for reading papers
Tools for reading papersTools for reading papers
Tools for reading papers
 
Functional linear data structures in f#
Functional linear data structures in f#Functional linear data structures in f#
Functional linear data structures in f#
 
Modal Type Theory
Modal Type TheoryModal Type Theory
Modal Type Theory
 
Type theories personality theories (4 Temperament theory, 5 Temperament the...
Type theories   personality theories (4 Temperament theory, 5 Temperament the...Type theories   personality theories (4 Temperament theory, 5 Temperament the...
Type theories personality theories (4 Temperament theory, 5 Temperament the...
 
Analytical psychology Theories of Personality Carl Jung
Analytical psychology Theories of Personality Carl JungAnalytical psychology Theories of Personality Carl Jung
Analytical psychology Theories of Personality Carl Jung
 

Similaire à Type Theory and Practical Application

Mdst3703 2013-09-10-textual-signals
Mdst3703 2013-09-10-textual-signalsMdst3703 2013-09-10-textual-signals
Mdst3703 2013-09-10-textual-signals
Rafael Alvarado
 
Logic programming (1)
Logic programming (1)Logic programming (1)
Logic programming (1)
Nitesh Singh
 
Who studies maths practice
Who studies maths practiceWho studies maths practice
Who studies maths practice
Brendan Larvor
 
Foundations of Knowledge Representation in Artificial Intelligence.pptx
Foundations of Knowledge Representation in Artificial Intelligence.pptxFoundations of Knowledge Representation in Artificial Intelligence.pptx
Foundations of Knowledge Representation in Artificial Intelligence.pptx
kitsenthilkumarcse
 

Similaire à Type Theory and Practical Application (20)

Intoduction to Homotopy Type Therory
Intoduction to Homotopy Type TheroryIntoduction to Homotopy Type Therory
Intoduction to Homotopy Type Therory
 
Propositional logic(part 2)
Propositional logic(part 2)Propositional logic(part 2)
Propositional logic(part 2)
 
chapter2 Know.representation.pptx
chapter2 Know.representation.pptxchapter2 Know.representation.pptx
chapter2 Know.representation.pptx
 
Mdst3703 2013-09-10-textual-signals
Mdst3703 2013-09-10-textual-signalsMdst3703 2013-09-10-textual-signals
Mdst3703 2013-09-10-textual-signals
 
AI3391 Artificial intelligence Unit IV Notes _ merged.pdf
AI3391 Artificial intelligence Unit IV Notes _ merged.pdfAI3391 Artificial intelligence Unit IV Notes _ merged.pdf
AI3391 Artificial intelligence Unit IV Notes _ merged.pdf
 
Geuvers slides
Geuvers slidesGeuvers slides
Geuvers slides
 
AI3391 Artificial Intelligence Session 26 First order logic.pptx
AI3391 Artificial Intelligence Session 26 First order logic.pptxAI3391 Artificial Intelligence Session 26 First order logic.pptx
AI3391 Artificial Intelligence Session 26 First order logic.pptx
 
Subtyping
Subtyping Subtyping
Subtyping
 
BT02.pptx
BT02.pptxBT02.pptx
BT02.pptx
 
Fis2010 0823
Fis2010 0823Fis2010 0823
Fis2010 0823
 
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
 
Logic programming (1)
Logic programming (1)Logic programming (1)
Logic programming (1)
 
L9 wrapper classes
L9 wrapper classesL9 wrapper classes
L9 wrapper classes
 
Lecture 1 - Objects and classes
Lecture 1 - Objects and classesLecture 1 - Objects and classes
Lecture 1 - Objects and classes
 
Who studies maths practice
Who studies maths practiceWho studies maths practice
Who studies maths practice
 
Who studies maths practice
Who studies maths practiceWho studies maths practice
Who studies maths practice
 
Lec 3 knowledge acquisition representation and inference
Lec 3  knowledge acquisition representation and inferenceLec 3  knowledge acquisition representation and inference
Lec 3 knowledge acquisition representation and inference
 
Time series anomaly discovery with grammar-based compression
Time series anomaly discovery with grammar-based compressionTime series anomaly discovery with grammar-based compression
Time series anomaly discovery with grammar-based compression
 
The logic(s) of informal proofs (tyumen, western siberia 2019)
The logic(s) of informal proofs (tyumen, western siberia 2019)The logic(s) of informal proofs (tyumen, western siberia 2019)
The logic(s) of informal proofs (tyumen, western siberia 2019)
 
Foundations of Knowledge Representation in Artificial Intelligence.pptx
Foundations of Knowledge Representation in Artificial Intelligence.pptxFoundations of Knowledge Representation in Artificial Intelligence.pptx
Foundations of Knowledge Representation in Artificial Intelligence.pptx
 

Plus de Jack Fox (7)

Dependent Types make bad data unrepresentable
Dependent Types make bad data unrepresentableDependent Types make bad data unrepresentable
Dependent Types make bad data unrepresentable
 
Dependent Types
Dependent TypesDependent Types
Dependent Types
 
Introduction to the lambda calculus
Introduction to the lambda calculusIntroduction to the lambda calculus
Introduction to the lambda calculus
 
Functional programming for production quality code
Functional programming for production quality codeFunctional programming for production quality code
Functional programming for production quality code
 
F# for functional enthusiasts
F# for functional enthusiastsF# for functional enthusiasts
F# for functional enthusiasts
 
Semantically coherent functional linear data structures
Semantically coherent functional linear data structuresSemantically coherent functional linear data structures
Semantically coherent functional linear data structures
 
Linear structures lightning talk
Linear structures lightning talkLinear structures lightning talk
Linear structures lightning talk
 

Dernier

%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Dernier (20)

WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 

Type Theory and Practical Application

  • 1. Type Theory And Practical Application
  • 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
  • 7.
  • 8. Harper’s Computer Science Holy Trinity • Category Theory • Type Theory • Proof Theory
  • 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
  • 37. Theorem Provers • Agda type checking • Coq proof strategies
  • 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