an introduction to type theory
play

An Introduction to Type Theory Part 3 Tallinn, September 2003 with - PowerPoint PPT Presentation

An Introduction to Type Theory Part 3 Tallinn, September 2003 with cartoons by Conor McBride http://www.cs.nott.ac.uk/txa/tallinn/ Thorsten Altenkirch University of Nottingham An Introduction to Type Theory p.1/32 The established


  1. � ✁ ✄ ✡ ☞ ✌ ✍ � ✁ ✂ � ✂ ✁ � ✟ ✄ ✄☎ ✆ ✡ ☞ ✌ ✍ ✞ � ✂ ✂ ✆ ✄ ✝ ✁ ✂ ✡ ✁ ☛ ✄ ✁ � ✁ ✂ ✆ ✡ ✄ ✂ � — no dependent types ✞✠✟ let Hindley-Milner: Type quantification and application can be made implicit. Split left hand sides using type information An Introduction to Type Theory – p.6/32

  2. � ✂ ✁ ✂ � ✟ ✄ ✄☎ ✆ � ☞ ✌ ✍ � ✁ � ✁ ✁ ✂ � ✟ ✄ ✄☎ ✆ � ✟ ✡ ✆ ☞ ✌ ✍ � ✂ ✁ ✂ ✆ ✄ ✝ ✁ ✂ ✡ ✄ ☛ ✂ ✁ � ✁ � ✆ ✞ ✍ ✌ ☞ ✡ ✄ ✡ � ✂ ✁ � ✂ ✄ — no dependent types ✞✠✟ let Hindley-Milner: Type quantification and application can be made implicit. Split left hand sides using type information An Introduction to Type Theory – p.6/32

  3. � ✂ ✁ ✂ � ✟ ✄ ✄☎ ✆ � ☞ ✌ ✄ � ✁ � ✁ ✁ ✂ � ✟ ✄ ✄☎ ✆ � ✟ ✡ ✆ ☞ ✌ ✍ � ✂ ✁ ✂ ✆ ✄ ✝ ✁ ✂ ✡ ✄ ☛ ✂ ✁ � ✁ � ✆ ✞ ✍ ✌ ☞ ✡ ✄ ✡ � ✂ ✁ � ✂ ✄ — no dependent types ✞✠✟ let Hindley-Milner: Type quantification and application can be made implicit. Split left hand sides using type information An Introduction to Type Theory – p.6/32

  4. � ✌ ✁ � ✂ ✁ � ✄ ☞ � � ✆ ✄☎ ✄ ✟ � ✂ ✟ ✁ ✌ ✡ ☎ ✄ ✂ ✁ � ☞ ✄ ✆ ✡ ✟ � ✆ ✄☎ ✁ ✂ � ✆ ✆ ✄ ✝ ✁ ✂ ✡ ✄ ☛ ✂ ✁ � ✂ ✂ ✁ ✡ ✡ ✁ � ✍ ✄ ☞ ✌ ✄ ✞ � ✂ ✁ � ✂ — no dependent types ✞✠✟ let Hindley-Milner: Type quantification and application can be made implicit. Split left hand sides using type information An Introduction to Type Theory – p.6/32

  5. � ✂ � ✟ ✄ ✄☎ ✆ � ☞ ✌ ✄ � ✁ ✂ � ✁ � ✁ ☞ ✡ ✄☎ ✂ ✁ � ✌ ✆ ✟ ✡ ✟ � ✆ ✄☎ ✄ ✂ � ✁ ✂ ✆ ✄ ✝ ✁ ✂ ✡ ✄ ☛ ✂ ✁ � ✁ ✂ ✆ ✡ ✄ ✁ � ✍ ✌ ☞ ✡ ✄ ✞ � ✂ ✁ � ✂ is not good ✞✠✟ let An Introduction to Type Theory – p.7/32

  6. � ✂ ✟ � ✆ ✄☎ ✄ ✟ � ✁ ✆ � ✂ ✁ � ✄ ✌ ☞ ✡ ☞ ✁ ✁ ✆ ☎ ✄ ✂ ✁ � ✂ � ✌ ✂ ✁ � ✡ ✄☎ ✂ ✁ � � ✆ ✄☎ ✂ ✄ ✆ ✂ ✁ � ✁ ☛ ✂ ✄ ✡ ✂ ✁ ✝ ✄ ✆ ✄ ✡ � � ✟ � ✂ ✁ � ✂ ✁ ✁ ✍ ✌ ☞ ✡ ✄ ✞ � ✂ is not good ✞✠✟ let The function is partial leads to a runtime error. An Introduction to Type Theory – p.7/32

  7. � ✟ ✆ ✡ ✟ � ✆ ✄☎ ✄ � ✌ ✂ ✁ � ✂ ✁ � ✄ ✁ ☞ � � � ✂ ✁ � ✆ ☎ ✄ ✂ ✁ ✂ ✁ ✁ � ✂ ✁ � ✡ ✄☎ ✂ ☞ ✌ ✆ ✂ ✄ ✄☎ ✆ ✂ ✁ � ✁ ☛ � ✄ ✡ ✂ ✁ ✝ ✄ ✆ ✂ ✡ ✁ � ✄ ✟ � ✂ ✁ � ✂ ✁ ✂ ✍ ✌ ☞ ✡ ✄ ✞ � is not good ✞✠✟ let The function is partial leads to a runtime error. Reason: The type of is not informative enough. An Introduction to Type Theory – p.7/32

  8. An Introduction to Type Theory – p.8/32 ✂ ✂ ✄ ✄ ☎ ✄ ✂ ✁ ☎ ✟ ✞ ✝ ✄ � ✄ ✄ ✄ � � ✂ ✁ ✝ ✄ ✄☎ ✄ ✟ ✝ � ✂ ✁ ✂ ✁ ✟ ✞ ✞ ☎ ✟ ✄ ✄ ☎ � ✄ ☛ ✂ ✁ ✡ ✄ ☛ ✂ ✁ ✄ ✡ ☛ ✂ ✂ ✁ ✂ ✄ ☎ ✝ ☛ ✁ ✂ ✄ ☎ ✂ ✁ ✞✠✟ where data types where ✞✠✟ data data

  9. An Introduction to Type Theory – p.8/32 ✄ ✞ ✄ ✄ ✝ ✞ ✟ ✁ ✂ ✄ ✄ ✂ ✄ ☎ ✝ ☎ ✞ ✟ ✁ ✂ ✁ ✂ � ✟ ✄ ✄☎ ✄ ✝ ✁ ✂ � ✄ ✂ ✟ ✄ ☎ � ✄ ☛ ✂ ✁ ✡ ✄ ☛ ✂ ✁ ✡ ✂ ✄ ☛ ✂ ✁ ✂ ✄ ☎ ✝ ☛ ✁ ✁ ✞✠✟ where data types where ✞✠✟ data data

  10. ✁ � Better data types, better An Introduction to Type Theory – p.9/32

  11. ✓ ✝ � ✜ � ✔ � ✁ ✛ ✄ ✁ ✝ ✂ ✝ ✛ � ✜ ☛ ✆ ✝ ✁ ✛ ✂ ✝ ✛ ✁ ✔ � ✁ � ✄ ✜ ✂ ✝ � ✁ ✁ ✄ � ✁ ✓ ✄ ☎ ☛ ✆ ✂ Better data types, better ☞✂✁ ☞✂✁ ☞✂✁ data where An Introduction to Type Theory – p.9/32

  12. An Introduction to Type Theory – p.9/32 ✌ ✠ ✄ ✁ � ☎ � ✙ ✑ ✁ ✁ ✝ � ✛ ✂ ✄ ✁ � � ✙ ✑ ✁ ✄ ✁ ✁ ✠ ✄ � ✠ ✔ � ✜ ✓ � ✙ ✑ ✁ ✁ ✄ ✠ ✁ ✆ ✜ ✛ ✒ ✙ ✂ � � ✙ ✑ ✁ � ✄ ✁ ✄ � ✜ ✓ ✛ ✝ ✂ ✁ ✆ ☛ ☎ ✁ � � ✄ ✁ � ✛ ✝ ✂ ✄ ✁ � ✁ � ✔ ✁ ☛ ✛ ✝ ✂ ✁ ✝ � ✆ ✜ ✜ � ✛ ✝ ✂ ✁ ✝ ✄ ✔ ✓ Better data types, better ☞✂✁ ☞✂✁ ☞✂✁ where where ☞✂✁ ☞✂✁ data data

  13. � � ✁ ✌ ✝ ✛ ✂ ✄ ✁ � ✙ ✑ ✑ ✁ ✑ ✄ ✙ ✁ � ✄ ✁ ✁ ✙ � � ✄ ✠ ✠ ✜ ✛ ✒ ✙ ✂ � � ✙ ✑ ✁ ✁ ✠ ✄ � ✁ ✠ ☎ � ✔ ✁ � ☛ ☎ ✄ ✓ ✁ � ✄ ✁ ✛ ✂ ✝ ✂ ✜ ✄ � ✁ � ✔ ✁ ✁ ✝ � ✜ ✜ ✓ ✛ ✝ ✂ ✁ ✝ ☛ � ✛ ✛ ✝ ✂ ✁ ✝ ✔ � ✜ ✓ ✁ Better data types, better ☞✂✁ ☞✂✁ data where ☞✂✁ data where An Introduction to Type Theory – p.9/32

  14. An Introduction to Type Theory – p.9/32 ✙ ✁ ✁ ✄ ✠ ✠ ✜ ✛ ✒ ✙ ✂ � � ✑ ✙ ✁ ✁ ✠ ✄ � ✁ ✠ ☎ � ✙ ✑ ✁ ✁ ✌ ✑ � � ✁ � ✁ ✝ � ✆ ✁ ✄ ✛ � ✛ ✝ ✂ ✝ ✓ � � ✙ ✑ ✁ ✁ � ✄ ✁ � ✔ � ✜ ✝ ✛ ✂ ☎ ✄ ✝ ✔ � ✜ ✓ ✛ ✝ ✂ ✁ ☛ ✄ ✝ ✁ � ✄ ✁ � ✛ ✝ ✂ ✄ ✁ � ✁ ✂ ✁ ✛ � ✁ � � ✙ ✑ ✁ ✄ ✁ � ✄ � ✁ ✔ ✝ � ✜ ✜ ☛ ✓ ✛ ✝ ✁ ✂ Better data types, better ☞✂✁ ☞✂✁ where where let ☞✂✁ ☞✂✁ data data

  15. An Introduction to Type Theory – p.9/32 ✁ ✠ ✠ ✜ ✛ ✒ ✙ ✂ � � ✙ ✑ ✁ ✠ ✄ ✁ � ✁ ✠ ☎ � ✙ ✑ ✁ ✁ ✌ ✝ ✛ ✄ ✁ ✄ ✝ � ✁ ✝ � ✁ ✄ ✛ � ✛ ✝ ✂ ✁ � ✑ � ✙ ✑ ✁ ✁ � ✔ � ✜ ✓ � ✙ ✂ ✁ � ✄ ✝ ✔ � ✜ ✓ ✛ ✝ ✂ ✁ ☛ ☎ ✁ ✂ � ✄ ✁ � ✛ ✝ ✂ ✄ ✁ � ✁ � ✁ ✝ � ✑ ✁ � ✄ ✁ � ✛ ✙ ✔ ✜ ✁ � ✓ ✛ ✝ ✂ ✁ ✝ ☛ ✜ � ✄ Better data types, better ☞✂✁ where where let ☞✂✁ ☞✂✁ data data

  16. An Introduction to Type Theory – p.9/32 � � ✙ ✑ ✁ ✁ ✄ ✠ ✠ ✜ ✛ ✒ ✙ ✂ � ✜ ✙ ✑ ✁ ✁ ✠ ✄ � ✁ ✠ ☎ � ✙ ✑ ✁ ✓ � ✌ ✄ ✂ ✁ � � � ✁ ✄ ✛ � ✁ ✝ � ✁ ✛ ✔ � ✛ ✝ ✂ ✁ ✝ � � ✙ ✑ ✁ ✁ � ✁ ✝ � ☎ ✂ ✁ ✝ ✔ � ✜ ✓ ✛ ✝ ✂ ✁ ☛ ✄ ✛ ✁ � ✄ ✁ � ✛ ✝ ✂ ✄ ✁ � ✁ ✛ ✝ � ✁ ✂ ✄ ✁ � � ✙ ✑ ✁ ✄ ✁ ✜ ✄ � � ✓ ☛ ✝ ✁ ✂ ✛ ✝ ✜ � ✔ Better data types, better ☞✂✁ where where let ☞✂✁ ☞✂✁ data data

  17. An Introduction to Type Theory – p.9/32 ✄ ✙ ✑ ✁ ✁ � ✔ � ✜ ✓ � ✙ ✑ ✁ ✁ ✠ � ✙ ✁ � ✠ ✄ ✁ ✁ ✑ � ✠ � ✂ ✙ ✒ ✛ ✜ � ✝ � ✓ ✁ ✂ ✛ ✄ ✁ � ✜ ☛ ☛ ✝ ✔ � ✁ ✂ � ☎ ✁ ✁ ✂ ✝ ✛ � ✛ ✄ � � ✝ ✁ � ✛ ✄ ✁ ✠ ☎ � ✁ ✜ � ✛ ✝ ✂ ✁ ✝ ✔ � ✜ ✓ ✛ ✝ ✂ ☛ ✝ ☎ ✄ ✁ � ✄ ✁ � ✛ ✝ ✂ ✄ ✁ � ✁ ✙ ☛ ✁ ✂ ✑ ✁ ✁ ✌ ✝ ✛ ✂ ✄ ✁ � � ✙ ✑ ✁ ✄ � ✝ ✛ ✓ ✜ � ✔ ✁ ✄ � ✁ Better data types, better ☞✂✁ where where let ☞✂✁ ☞✂✁ data data

  18. An Introduction to Type Theory – p.9/32 ✑ ✜ � ✔ � ✁ ✁ ✙ � � � ✝ ✁ ✂ ✝ ✓ ✙ � ✙ ✁ ✑ ✙ � � ✂ ✒ ✑ ✛ ✜ ✠ ✠ ✄ ✁ ✁ ✛ ✛ � � � ✁ ✂ ✛ ✄ ✁ ✓ ☎ ✜ ☛ ✝ ✔ � ✁ ✂ ☛ ✔ ✄ ✄ ✁ � ✝ ✁ � ✛ ✁ ✠ ✄ ✓ ✂ ✙ ✒ ✛ ✜ ✠ ✁ ✠ ✄ � ✁ ✛ ✓ ✜ � ✔ ✝ ✂ ✂ ✝ ✛ � ✜ ☛ ✝ ✝ ✁ ✂ ✛ ✁ � ✁ ✄ ✂ ✝ � ☛ ✁ ✄ � ✁ ✄ ☎ ✁ ✁ ✝ ✌ � ✁ ✄ ✂ ✛ ✝ ✁ ✙ ✁ ✑ ✙ � ☎ ✠ ✛ � ✑ ✄ ✓ ✜ � ✔ � ✁ ✁ � ✁ ✄ Better data types, better ☞✂✁ where where let ☞✂✁ ☞✂✁ data data

  19. An Introduction to Type Theory – p.9/32 ✝ ✑ ✙ � � ✝ ✁ ✂ ✛ ✁ � ✛ ✄ ✁ � ✝ ✁ ✁ � ✛ ✄ ✂ ✙ ✒ ✛ ✜ ✠ ✠ ✁ ✔ ✁ ✑ ✙ � ✓ ✜ � � ✄ � ✔ ✙ ✒ ✛ ✜ ✠ ✠ ✄ ✓ ✓ ✜ ☛ ✝ ✔ � ✁ ✂ ✂ ✁ ✁ ✠ ✓ ✂ ✙ ✒ ✛ ✜ ✠ ✄ ✄ ✔ ☎ ☛ � ✁ ✂ ✛ � � ✙ ✂ ✓ ✜ � ✔ ✝ ✁ ✝ ✝ ✛ � ✜ ☛ ✝ ✁ ✂ ✛ ✂ ✛ ✛ ✁ � ✁ ✄ ✂ ✝ � ✁ ✁ ✄ � ✁ ✄ ☎ ☛ ✑ ✝ ✓ ✙ ✛ ✝ ✌ ✁ ✁ ✑ � ✄ ☎ ✠ ✁ � ✠ ✄ ✁ ✁ ✜ ✂ ✁ ✁ � � ✙ ✑ � ✁ ✔ ✄ � ✁ � ✄ Better data types, better ☞✂✁ where where let ☞✂✁ ☞✂✁ data data

  20. An Introduction to Type Theory – p.9/32 ✄ ✝ ✁ ✂ ✝ ✛ � ✛ ✁ � � ✝ ✁ � ✛ ✄ ✁ � ✙ ✂ ✑ ✛ ✜ ✠ ✠ ✄ ✁ ✁ ✙ ✑ � ✓ ✜ � ✔ � ✁ ✁ ✓ ✙ � ✁ ✔ ✓ ✜ ☛ ✝ ✔ � ✛ ✠ ✄ ✁ ✠ ✄ ✝ ✛ ✄ ✁ ✠ ✄ ✜ ✒ � ✛ ✜ ✠ ✠ ✄ ✔ ☎ ☛ ✁ ✛ ✠ ✛ ✄ ✁ ✓ ✂ ✙ ✒ ✒ ✙ ✂ ✛ ✜ � ✔ ✝ ✁ ✂ ✝ � ✛ ✜ ☛ ✝ ✁ ✂ ✝ � ✓ ✝ ✜ � ✁ � ✁ ✄ ✂ ✝ ✛ ✁ ✂ ✄ � ✁ ✄ ☎ ☛ ✁ ✓ ✛ � ✂ � ✁ ✠ ☎ � ✙ ✁ ✑ ✁ ✁ ✔ ✌ ✝ ✛ ✄ ✁ ✙ � � ✁ ✄ � ✁ ✄ ✁ ✑ ✁ ✑ ✙ � � ✠ ✄ Better data types, better ☞✂✁ where where let is a total function. ☞✂✁ ☞✂✁ data data

  21. An Introduction to Type Theory – p.9/32 � � ✛ ✄ ✁ � ✝ ✁ ✛ ✝ ✄ ✁ ✓ ✂ ✙ ✒ ✛ ✜ ✛ ✂ ✠ ✄ � ✄ ✁ ✁ ✑ ✙ � ✓ ✜ ✔ ✁ � ✁ ✁ ✑ ✙ � � ✝ ✠ ✔ ✠ ✁ ✁ ✛ ✄ ✁ ✠ ✄ ✝ ✛ ✄ ✛ ✔ ✄ ✁ � ✁ ✂ ✄ ☎ ✆ � ✝ ☎ ✂ ☛ � ✁ ✠ ✛ ✄ ✁ ✓ ✙ ☛ ✒ ✛ ✜ ✠ ✠ ✄ ✔ ✓ ✜ � ✠ ✜ � � ✔ ✝ ✁ ✂ ✝ ✛ ✜ ✓ ☛ ✝ ✁ ✂ ✝ ✛ ✓ ✛ ✜ ✛ ✔ � ✁ � ✁ ✄ ✂ ✝ ✛ ✁ ✝ ✄ � ✁ ✄ ☎ ☛ ✁ ✂ � ✜ ✙ ✁ ✁ ✑ � � ☎ ✠ ✂ ✌ � � ✠ ✄ ✁ ✁ ✑ ✁ ✝ ✙ ✙ ✁ ✄ � ✁ ✒ ✄ ✁ ✛ ✑ ✙ � � ✁ ✄ ✂ � Better data types, better ☞✂✁ where is not well-typed. where let is a total function. ☞✂✁ ☞✂✁ data data

  22. Verify An Introduction to Type Theory – p.10/32

  23. � ✁ ✂ Verify How can we use on lists of unknown length user input,. . . ? An Introduction to Type Theory – p.10/32

  24. ✞ � � ✆ ✄ ✂ ☎ ✄ � ✡ ✄ ✂ ✞ ✁ ✁ ✝ ✁ ✂ ☛ ✄ � ✄ ✡ � ✡ ✆ ✂ ✁ � � Verify How can we use on lists of unknown length user input,. . . ? let An Introduction to Type Theory – p.10/32

  25. ✄ ✝ � ☎ ✂ ✄ ✆ � � ✞ ✡ � ✡ ✆ ✁ � ✁ ✞ ✂ � ✄ ✡ ✄ � ✁ ✂ ✍ ✌ ☞ ✡ � ✂ ✄ ☛ ✂ ✁ ✁ � ✁ ✞ ✄ Verify How can we use on lists of unknown length user input,. . . ? let An Introduction to Type Theory – p.10/32

  26. ✝ � � ✞ � ✡ ✆ ✁ � ✁ ✞ ✂ ✄ � � ☞ ✌ ✍ ✁ � ✁ ✞ ✂ ✄ � ✟ � ✆ ✆ ✂ � ✁ ✂ ✍ ✌ ☞ ✡ ✄ � ✄ ☛ ✁ ✄ ✁ � ✁ ✞ ✂ ✄ ✡ � ✄ ☎ ✂ ✡ Verify How can we use on lists of unknown length user input,. . . ? let An Introduction to Type Theory – p.10/32

  27. ✡ � � ✆ ✁ � ✁ ✞ ✂ ✄ � � ☞ ✌ ✂ ✞ ✁ ✂ ✞ � � ✁ � ✁ ✞ ✂ ✄ � ✟ � ✝ ✆ ✁ � ✁ ✂ ✍ ✌ ☞ ✡ ✄ � ✄ ☛ ✂ ✁ � � ✁ ✞ ✂ ✄ ✡ � ✄ ☎ ✂ ✄ ✆ � ✡ Verify How can we use on lists of unknown length user input,. . . ? let An Introduction to Type Theory – p.10/32

  28. � � ✂ ✞ ✁ � ✁ � ✞ � ✂ ✁ ✂ � ✌ ☞ ✆ ✄ ✟ ✄ ✞ � ✆ ✡ ✟ � ✄ ✂ ✁ ✡ � ✁ ✍ ✌ ☞ � ✆ � ✂ � � ✁ � ✁ ✁ ✂ ☛ ✄ ✄ ✂ ✡ ☞ ✌ ✍ ✂ ✁ � ✞ ✄ ✞ ✝ ✁ � ✁ ✆ ✡ � ✞ � ✡ � ✆ ✄ ✂ ☎ ✄ � ✟ Verify How can we use on lists of unknown length user input,. . . ? let An Introduction to Type Theory – p.10/32

  29. ✌ � ✡ ✟ � ✄ ✂ ✞ ✁ ✁ � � � ✞ ✂ ✁ ✂ � ✆ ✆ ☞ � ✞ � ✆ ✡ ✟ � ✄ ✂ ✁ ✌ � ✁ ✂ � ✁ ✟ ✁ � ☞ � � ✄ ✞ ✁ � ✁ ✁ ✂ ☛ � ✄ ✄ ✡ ☞ ✌ ✍ ✂ ✁ � ✂ ✡ ✄ � ✂ ✞ ✁ � ✁ ✆ ✡ ✞ � ✝ � � ✆ ✄ ✂ ☎ ✄ ✟ Verify How can we use on lists of unknown length user input,. . . ? let An Introduction to Type Theory – p.10/32

  30. An Introduction to Type Theory – p.10/32 � ✁ ✂ � ✁ ✟ ✁ � ✌ ☞ ✆ ✁ ✡ ✟ � ✄ ✂ ✞ ✁ � ✁ � ✞ � � ✍ ✌ ☞ � ✡ ✄ ✂ ✞ ✁ ✁ ✂ � ✆ � ✟ � ✆ ✡ ✟ � ✄ � ✞ ✂ � ☎ ✄ � ✡ ✄ ✂ ✞ ✁ ✁ ✄ ✁ ✂ ☛ ✄ � ✄ ✡ � ✁ ✂ ✆ ✂ ✂ ✁ ✂ � ✌ ☞ � � ✄ ✞ � ✁ � ✁ ✆ ✡ � ✞ ✝ � on lists of unknown length Verify How can we use user input,. . . ? let

  31. An Introduction to Type Theory – p.10/32 ✁ ✆ � ✟ � ✆ ✡ ✟ � ✄ ✂ ✞ � ✁ ✁ ✂ � ✁ ✟ ✁ � ✌ ☞ � ✆ ✡ � � � ☞ ✍ ✌ ☞ � ✁ ✟ ✁ � � ✍ ✌ � ✁ � ✞ ✂ ✁ ✂ � � � ✡ ✄ ✂ ✞ ✟ ✄ � ✞ � ✆ ✄ ✂ ☎ ✄ � ✡ ✄ ✂ ✁ ✝ � ✁ ✁ ✂ ☛ ✄ � ✄ ✡ � ✁ ✂ ✞ ✂ � ✞ ✁ � ✁ � � ✞ ✂ ✁ ✂ ✌ � ☞ � � ✄ ✂ ✞ ✁ � ✁ ✆ ✡ on lists of unknown length Verify How can we use user input,. . . ? let

  32. An Introduction to Type Theory – p.10/32 ✄ ✁ � ✁ � ✆ � ✟ � ✆ ✡ ✟ � ✂ ✂ ✞ ✁ � ✁ ✂ � ✁ ✟ ✁ � ✌ ☞ ✞ ✄ ✆ ✂ ✍ ✌ ☞ � ✁ ✟ ✁ � � � � ✞ ✁ ✡ ✂ � ✌ ☞ � � ✞ ✂ ✁ ✂ � � � � ✡ ✝ ✞ � � ✆ ✄ ✂ ☎ ✄ � ✡ ✄ ✂ ✁ ✞ � ✁ ✁ ✂ ☛ ✄ � ✄ ✡ � ✁ ✟ � ✂ ✁ � ✄ ✂ ✞ ✁ � ✁ � � ✞ ✂ ✂ ✡ � ✌ ☞ � � ✄ ✂ ✞ ✁ � ✁ ✆ on lists of unknown length Verify How can we use user input,. . . ? let

  33. An Introduction to Type Theory – p.10/32 � � � ✡ ✄ ✂ ✞ ✁ � ✁ � ✆ � ✟ ✆ ✂ ✡ ✟ � ✄ ✂ ✞ ✁ � ✁ ✂ � ✁ ✟ � ✁ � ✟ ✆ � ✂ ✟ � ✁ ✟ ✁ � ✌ ☞ � ✁ ✁ ✂ � � � � ✞ ✂ ✁ ✂ � ✌ ☞ � � ✞ ✁ ✌ � ✂ ✞ ✝ � � ✆ ✄ ✂ ☎ ✄ � ✡ ✄ ✞ ✡ ✁ � ✁ ✁ ✂ ☛ ✄ � ✄ ✡ � ✁ ☞ ✆ ✂ � � ✆ ✡ ✟ � ✄ ✂ ✞ ✁ � ✁ � ✞ ✁ ✂ ✁ ✂ � ✌ ☞ � � ✄ ✂ ✞ ✁ � on lists of unknown length Verify How can we use user input,. . . ? let

  34. Going further An Introduction to Type Theory – p.11/32

  35. ✁ � ✁ ✞ ✂ ✄ Going further The type of is not informative enough for some of its potential applications. An Introduction to Type Theory – p.11/32

  36. ✁ � ✁ � ✁ ✁ � ✄ ✟ ✁ ✡ ✂ � � ✄ ✂ ✞ ✁ � ✁ ✞ Going further The type of is not informative enough for some of its potential applications. How is related to ? An Introduction to Type Theory – p.11/32

  37. ✄ � ✞ ✁ � ✁ � ✂ � ✁ � ✡ ✂ ✂ ✞ ✁ ✁ ✄ � ✁ � ✁ ✞ ✂ ✄ � ✁ ✞ � ✁ ✟ ✁ � ✂ Going further The type of is not informative enough for some of its potential applications. How is related to ? When does return ? An Introduction to Type Theory – p.11/32

  38. � ✝ ✁ ☎ ✂ ✁ ✌ ✓ ✜ ☛ ✔ ☛ � ✁ ✜ ✓ ✂ ✁ ✌ ✝ ✔ � ☎ ✁ ✌ ✂ ✄ ✝ ✁ ✂ ✝ ✛ � ✂ ✁ ✌ ✝ ✁ ✄ ✂ ✁ improved. let ☞✂✁ An Introduction to Type Theory – p.12/32

  39. An Introduction to Type Theory – p.12/32 ✛ ✓ � ✁ ✛ ✗ ✒ � ✁ ✝ � ✁ ✗ ✁ ✒ ✂ � ✛ ✝ ✂ ✁ ✝ ✄ ✁ ✝ ✂ ✌ ✁ ✁ ✔ ✝ ✆ � ✓ � ✁ ✛ ✗ ✒ � ✝ ✝ � � ✒ ✒ ✄ ✄ ✁ � ✄ ✝ ✔ � � ✛ ✝ ☎ ✁ � ☛ ☎ ✌ ✁ ✂ ✄ ✁ ✌ ✁ ✁ ✂ � ✛ ✝ ✂ ✁ ✝ ✄ ✂ ✗ ✂ ✌ ✌ ✒ � ✄ ✁ ✝ ✄ � ✔ ✝ ✓ ✁ ✔ ✝ ✂ ✓ ✜ ✜ ✁ � ✁ ☛ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ where let ☞✂✁ data

  40. An Introduction to Type Theory – p.12/32 ✌ ✝ � � ✒ ✒ ✄ ✄ ✁ � ✄ ✝ ✔ ✝ ✁ � ✂ ✓ � ✁ ✛ ✗ ✒ � ✁ ✝ � ✁ ✛ ✗ ✁ ✒ ✂ ☎ ✝ � ✁ ✛ ✗ ✒ � ✁ ✝ � ✁ � ✝ ✑ ✗ ✂ ✄ ✁ ✝ ✄ � ✔ ✝ ✆ � ✓ � ✁ ✛ ✁ � � ✁ ✛ ☛ ✜ ✓ ✌ ✁ ✂ ☎ ✁ � ☛ ☎ ✌ ✂ � ✄ ✁ ✝ ✌ ✁ ✂ � ✛ ✝ ✂ ✁ ✝ ✄ ✂ ✔ ✝ ✁ ✄ ✝ ✂ ✁ ✝ ✄ ✁ ✝ � ✁ ✛ ✗ ✒ � ✒ ✔ ✁ ✜ ✓ ✝ ✄ � ✂ ✁ ✝ ✌ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ ☞✂✁ let where let ☞✂✁ data

  41. An Introduction to Type Theory – p.12/32 ✁ ✄ ✒ ✒ � � ✝ � ✁ ✒ ✗ ✛ ✁ � ✓ ✄ � ✆ � ✁ � ✒ ✗ ✛ ✁ ✓ ✄ ✂ ✁ ✌ ✝ ✔ ✝ � ✝ � ✝ ✁ � ✝ ✂ ✑ ☎ � ✗ ✁ � ✝ � ✁ ✂ ✛ ✒ ✔ ✑ � ✄ ✝ ✁ ✄ ✂ ☎ � ✝ � ✁ � ✝ ✁ ✁ � ✁ ✌ � ✔ ✝ ☛ ✜ ✓ ✌ ✁ ✂ ☎ ✁ � ☛ ☎ ✁ ✜ ✛ ✂ ✄ ✝ ✁ ✂ ✝ � ✂ ✂ ✁ ✌ ✝ ✁ ✄ ✛ ✁ ✓ ✝ ✛ ✁ � ✝ ✁ ✄ ✁ ✒ ✂ ✝ ✛ � ✂ ✒ ✗ ✂ ✗ ✝ � ✁ ✌ ✝ ✔ � ✄ ✝ ✁ ✄ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ ☞✂✁ let where let ☞✂✁ data

  42. An Introduction to Type Theory – p.12/32 ✆ ✗ ✛ ✁ � ✓ � ✝ � ✔ � ✄ ✝ ✁ ✄ ✂ ✒ ✁ ☎ ✄ ✓ ✂ ✁ ✌ ✝ ✔ ✝ � ✝ ✁ ✄ ✄ ✒ ✒ � � ✑ ✝ ✁ ✁ ✁ ✂ ✂ ✑ ☎ ✝ � ✓ ✝ ✜ � ✔ ✝ � ✁ ✂ � ☎ � ✛ ✁ � ✝ ✁ � ✒ ✗ ✁ ✁ � ✝ ✂ ✑ ☎ ✝ � ✁ � ✛ ☛ ✁ ☎ ✂ ✁ ✌ ✓ ✜ ✝ ☛ ✔ � ✁ ✜ ✓ ✂ ✁ � ☎ ✝ � ✂ ✄ ✝ ✁ ✂ ✝ ✛ ✂ ✌ ✁ ✌ ✝ ✁ ✄ ✂ ✁ ✗ ✌ ✔ ✒ ✁ ✂ ✝ ✛ � ✂ ✗ ✄ ✛ ✁ � ✝ ✁ � ✒ ✝ � ✁ ✁ � � ✁ ✛ ✄ ✗ ✒ � ✝ ✄ ✝ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ ☞✂✁ let where let ☞✂✁ data

  43. An Introduction to Type Theory – p.12/32 ✄ � ✓ � ✆ ✝ ✔ � ✝ ✛ ✁ ✄ ✂ ✑ ☎ ✝ � ✁ ✗ � ✄ ✌ ✝ ✔ ✝ ✄ � ✁ ✄ ✒ ✒ ✒ � � ✝ ✁ � ✁ ✝ ✂ ✁ ☎ ✝ ✂ ✑ ☎ ✝ � ✓ ✒ ✜ � ✔ ✝ � ✁ ✂ � ✒ ✁ ✂ � ✒ ✗ ✛ ✁ � ✝ ✑ ✄ ☎ ✝ � ✁ ☎ ✝ � ✁ ✁ � ✓ ✝ ☎ ✂ ✁ ✌ ✓ ✜ ☛ ✔ � � ✁ ✜ ✓ ✂ ✁ ✌ ✁ ☛ ✔ � ✂ ✄ ✝ ✁ ✂ ✝ ✛ ✂ ☎ ✁ ✌ ✝ ✁ ✄ ✂ ✁ ✌ � ✝ ✁ ✁ � ✛ � ✂ ✒ ✗ ✛ � ✁ ✝ ✁ � ✒ ✗ ✛ ✁ ✂ ✝ ✝ ✛ ✝ ✄ ✄ � ✄ ✒ ✗ � ✁ ✝ ✁ ✁ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ ✝ ☎✄ ☞✂✁ let where let ☞✂✁ data

  44. An Introduction to Type Theory – p.12/32 ✁ ✂ ✑ ☎ ✝ � ✁ � ✝ � ✁ ✒ ✗ ✛ ✁ � ✝ ✂ ✑ ✄ ✝ ✝ ✒ ✄ ✒ ✒ � � ✝ ✁ � ✗ ✄ ✛ ✁ � ✓ � ✆ ✝ ✔ � ☎ � ✁ ✜ ✂ ✂ ✑ ☎ ✝ � ✁ ✓ � � ✔ ✓ ✜ ✝ ✔ � ✁ ✂ ✁ ☎ ✁ ☎ ☎ ✝ � ✁ ✄ ✒ ✒ � ✝ ✔ ✂ ✑ ☎ ✝ � ✁ ✓ ✜ � ✁ � � � ✂ ✁ ✌ ✓ ✜ ☛ ✝ ✔ ✁ ✁ ✜ ✓ ✂ ✁ ✌ ✝ ✔ � ☎ � ✁ ✂ ✂ ✄ ✝ ✁ ✂ ✝ ✛ � ✁ ☛ ✌ ✝ ✁ ✄ ✂ ✁ ✌ ☎ ✝ ✄ ✄ ✒ ✄ ✛ ✁ � ✝ ✁ � ✗ ✒ ✛ ✁ � ✓ ✂ ✁ ✌ ✝ ✗ ✂ � ✝ ✄ � ✝ ✒ ✗ ✛ ✁ � ✔ ✁ ✄ ✝ ✁ ✂ ✝ ✛ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ ✝ ☎✄ ☞✂✁ let where let ☞✂✁ data

  45. An Introduction to Type Theory – p.12/32 ✛ � ✁ � ✝ ✁ � ✒ ✗ ✁ ☎ � ✝ ✂ ✑ ☎ ✝ � ✁ ☎ ✝ ✑ � � � � ✝ ✁ � ✒ ✗ ✛ ✁ ✓ ✂ � ✆ ✝ ✔ � ✄ ✝ ✁ ✄ ✝ ✁ ✒ ✓ ☎ ☛ ✂ ✑ ☎ ✝ � ✁ ✜ ✁ � ✔ ✓ ✜ ✝ ✔ � ✁ ✂ � ✛ ✄ � ✒ ✒ � ☎ ✝ ✂ ✑ ☎ ✝ ✁ ✗ ✓ ✜ � ✔ ☎ � ✁ ✂ ✒ ✁ � ✄ ✁ ✁ ✌ ✓ ✜ ☛ ✝ ✔ � ✜ ☎ ✓ ✂ ✁ ✌ ✝ ✔ � ✄ ✝ ✂ ✁ ✄ ✂ ✂ ✄ ✝ ✁ ✂ ✝ ✛ � ✁ � ✌ ✝ ✁ ✄ ✂ ✁ ✌ ☎ ☛ ✄ ✁ ✒ ✛ � ✝ ✁ � ✒ ✁ ✗ ✁ ✛ � � ✓ ✂ ✁ ✌ ✝ ✔ ✁ ✗ ✄ ✒ � ✒ ✗ ✛ ✁ � ✝ ✁ ✄ ✝ ✁ ✂ ✝ ✛ � ✂ ✝ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ ✝ ☎✄ ☞✂✁ let where let ☞✂✁ data

  46. An Introduction to Type Theory – p.12/32 ☎ � ✒ ✗ ✛ ✁ � ✝ ✂ ✑ ✝ ✝ � ✁ ☎ ✝ � ✁ ✄ ✒ ✒ ✁ � ☎ ✝ � ✒ ✗ ✛ ✁ � ✓ � ✆ ✔ ✁ � ✄ ✝ ✁ ✄ ✂ ✑ ☎ ✝ � � ✝ ✝ � ✁ ✓ ✜ � ✔ ✓ ✜ ✝ ✔ ✂ ✝ ✑ ☎ ✝ � ✁ � ✝ � ✁ ✂ � ☎ ✂ ☎ ✑ ☎ ✝ � ✁ ✓ ✜ � ✔ � ✑ ✁ ✂ ✒ ✗ ✛ ✁ � ☎ ☛ ✂ ✁ � � ✜ ✌ ✓ ✜ ☛ ✝ ✔ � ✁ ✓ ✂ ✂ ✁ ✌ ✝ ✔ � ✄ ✝ ✁ ✁ ☎ � ✁ ✂ ✄ ✝ ✁ ✂ ✝ ✛ � ✂ ✌ ✁ ✝ ✁ ✄ ✂ ✁ ✌ ☎ ☛ � ✄ ✁ ✒ ✝ ✗ ✗ ✛ ✁ � ✓ ✂ ✁ ✌ ✔ ✁ ✝ ✄ � ✁ ✄ ✄ ✒ ✒ � � ✒ ✝ ✛ � ✝ ✁ ✄ � ✝ ✁ ✂ ✝ ✛ � ✂ ✒ ✗ ✛ ✁ ✁ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ ✝ ☎✄ ☞✂✁ let where let ☞✂✁ data

  47. An Introduction to Type Theory – p.12/32 ✂ ✔ ☎ � ✁ ✂ ✒ ✗ ✛ ✁ � ☎ ☛ ✑ ✜ ☎ ✝ � ✁ ✓ ✜ � ✔ ✓ ✜ ✝ ✔ � � ✓ ✑ ☎ � ✒ ✗ ✛ ✁ � ✝ ✂ ✑ ☎ ✝ � ✁ ✝ ✁ � ✁ ✄ ✒ ✒ � ☎ ✝ ✂ ✑ ☎ ✝ � ✂ ☎ ✁ ✁ ✂ ✑ ☎ ✝ � ✁ ✓ ✜ � ✔ ✓ ✂ ✌ ✁ ✝ ✔ ✕ ✂ ✒ ✗ ✛ ✁ � ✝ � ✁ ✂ ✂ � ✝ ✔ � ✁ � ✝ ✂ ✑ ☎ ✝ � ✁ ✓ ✜ � ✓ ✝ ✜ ✓ � ✆ ✝ ✔ ✔ ✕ ✄ ✒ ✒ � � ✁ � � ✁ � ✁ ✜ ✓ ✂ ✁ ✌ ✝ ✔ � ✄ ✝ ✄ ✝ � ✒ ✗ ✛ ✁ � ✝ ✁ ✄ ✝ ✁ ✁ ✔ ☛ ✛ ✁ ✂ ✄ ✝ ✁ ✂ ✝ ✛ � ✂ ✁ ✌ ✝ ✄ ✜ ✂ ✁ ✌ ☎ ☛ � ✁ ☎ ✂ ✁ ✌ ✓ ✝ ✂ � � ✂ � � ✝ ✁ � ✒ ✗ ✛ ✁ � ✓ ✆ ✒ ✝ ✔ � ✄ ✝ ✁ ✄ ✂ ✑ ☎ ✝ � ✒ ✝ ✄ ✓ ✒ ✗ ✛ ✁ � ✝ ✁ � ✒ ✗ ✛ ✁ ✄ � ✔ ✂ ✁ ✌ ✁ ✝ � ✝ ✄ ☞✂✁ ✝ ☎✄ improved. ☞✂✁ ✝ ☎✄ ✝ ☎✄ ☞✂✁ let where let ☞✂✁ data

  48. An Introduction to Type Theory – p.12/32 ✓ ✒ ✗ ✛ ✁ � ☎ ☛ ✂ ✑ ☎ ✝ � ✁ ✜ ✁ � ✔ ✓ ✜ ✝ ✔ � ✂ ✑ ☎ ✝ � ✁ ✂ � ✝ ✄ ✁ � ✝ ✂ ✑ ☎ ✝ � ✁ ☎ ✝ � ✁ ✒ ☎ ✒ � ☎ ✝ ✂ ✑ ☎ ✝ � ✁ ✓ ✜ � ✔ � ✂ ✗ ✁ ✝ ✂ ✑ ☎ ✝ � ✁ ✓ ✜ � ✔ ✓ ✂ ✌ � ✝ ✔ ✕ ✂ ✒ ✗ ✛ ✁ � ✝ � ✁ ✂ ✔ ✜ ✑ ✝ ☎ ✝ � ✁ ✓ ✜ � ✔ ✓ ✜ ✓ � ✆ ✔ ✓ ✔ ✕ ✄ ✒ ✒ � � ✝ � ✁ ✄ ✒ ✒ � ✁ � ✒ ✄ ✁ ✜ ✓ ✂ ✁ ✌ ✝ ✔ � ✄ ✝ ✁ � ✔ ✒ ✗ ✛ ✁ � ✝ ✁ ✄ ✝ ✁ ✂ � ✛ � ✝ ✂ ✁ ✂ ✄ ✝ ✁ ✂ ✝ ✛ � ✂ ✁ ✌ ✝ ✄ ☛ ✂ ✁ ✌ ☎ ☛ � ✁ ☎ ✂ ✁ ✌ ✓ ✜ � ✝ ✒ ✔ ✗ ✁ � ✒ ✗ ✛ ✁ � ✓ � ✆ ✝ � � ✄ ✝ ✁ ✄ ✂ ✑ ☎ ✝ � ✁ � ✝ ✁ � ✝ ✒ ✗ ✁ ✂ ✓ � ✁ ✛ ✒ ✌ � ✁ ✝ � ✁ ✛ ✒ ✛ ✝ ✔ ✝ ✄ � ✄ ✁ ✄ ☞✂✁ ✝ ☎✄ ✝ ☎✄ improved. ☞✂✁ ✝ ☎✄ ✝ ☎✄ ☞✂✁ let where let ☞✂✁ data

  49. An Introduction to Type Theory – p.12/32 ✂ ✑ ☎ ✝ � ✁ ✓ ✜ � ✔ ✓ ✜ ✝ ✔ � ✑ ☛ ☎ ✝ � ✁ � ✝ ✂ ✑ ☎ ✝ � ✁ ✓ ✜ ✂ ☎ ✔ ☎ � ✁ ☎ ✝ � ✁ ✄ ✒ ✒ � ☎ ✝ ✂ ✑ ✝ � � ✁ ✓ ✜ � ✔ ☎ � ✁ ✂ ✒ ✗ ✛ ✁ � ✓ ✁ � ✓ ✂ ✁ ✌ ✝ ✔ ✕ ✂ ✒ ✗ ✛ ✁ � ✝ ✁ � ✂ ✒ ✗ ✛ ✁ ✓ ✜ � ✔ ✓ ✜ ☛ ✝ ✔ ✔ ✜ ✜ ✁ ✓ � ✆ ✝ ✔ ✔ ✕ ✄ ✒ ✒ � � ✝ � ✄ ✓ ✒ ✒ � ✓ ✜ � ✔ ✝ ✂ ✑ ☎ ✝ � ✁ ✝ � ✑ ✗ ✓ ✂ ✁ ✌ ✝ ✔ � ✄ ✝ ✁ ✄ � ✒ ✛ ✁ ✁ � ✝ ✁ ✄ ✝ ✁ ✂ ✝ ✛ � ✂ ✂ ✗ ✜ � ✁ ✄ ✂ ✄ ✝ ✁ ✂ ✝ ✛ � ✂ ✁ ✌ ✝ ✁ ✂ ✔ ✁ ✌ ☎ ☛ � ✁ ☎ ✂ ✁ ✌ ✓ ✜ ☛ ✝ ✛ ✒ � ✂ ✝ ✛ ✁ � ✓ � ✆ ✝ ✔ � ✄ ✝ ✁ ✄ ✑ � ☎ ✝ � ✁ � ✝ ✁ � ✒ ✗ ✛ ✁ � ✝ ✒ ✗ ✁ ✝ ✁ � ✒ ✗ ✛ ✁ � ✓ ✂ ✁ ✌ ✝ ✔ ✝ ✄ � ✄ � � ✒ ✒ ✄ ☎ ✁ ☞✂✁ ✝ ☎✄ ✝ ☎✄ improved. ☞✂✁ ✝ ☎✄ ✝ ☎✄ ☞✂✁ let where let ☞✂✁ data

  50. Definitional equality An Introduction to Type Theory – p.13/32

  51. � ✡ � ✟ ✁ ✡ � ✆ ✁ ✟ ✡ ✁ � ✡ � � ✆ ✄ ✂ ✞ ✁ � ✁ ✁ Definitional equality The typing of depends on the equations: An Introduction to Type Theory – p.13/32

  52. � ✡ � ✟ ✁ ✡ � ✆ ✁ ✟ ✡ ✁ � ✡ � � ✆ ✄ ✂ ✞ ✁ � ✁ ✁ Definitional equality The typing of depends on the equations: This equations need to be true definitionally . An Introduction to Type Theory – p.13/32

  53. � ✟ � ✆ ✡ � ✁ � ✟ ✁ ✡ � ✆ ✁ � ✡ ✡ ✁ ✡ � � ✡ ✄ ✂ ✞ ✁ � ✁ � Definitional equality The typing of depends on the equations: This equations need to be true definitionally . If we need we have to use propositional equality. An Introduction to Type Theory – p.13/32

  54. Propositional equality An Introduction to Type Theory – p.14/32

  55. ✄ � ✄ ✁ � ✁ ✂ ✄ ✄ ☎ � � ✄ ✄ ✄ ✂ ✄ � ✄ ✄ ☎ ✄ ✂ ✄ Propositional equality data where An Introduction to Type Theory – p.14/32

  56. An Introduction to Type Theory – p.14/32 � � ✆ ✡ ✟ � ☎ � ✂ � � ✁ � ✁ ✌ ☞ � ☎ ✡ � � � ✁ � ✁ ✌ ☞ ✁ � ✁ ✡ � � ✡ ☎ � � ✂ � ✁ � ✂ ✄ ☎ ✁ � ✁ ✂ ✄ ✄ ✄ ✄ � � ✄ ☎ ✂ ✄ � ✡ ✄ ✄ � � � � ✡ ✄ ✡ ✂ ✂ � ✁ ✂ ☛ ✄ ✡ ✄ ✄ ✄ Propositional equality where data �✂✁ let

  57. An Introduction to Type Theory – p.14/32 ✌ ✌ ✂ ✄ ✁ � � ✄ ✄ � ✁ � ✁ ☞ ✂ ✁ � ✁ � ✡ � ✡ ☎ � � ✂ � ✁ ☎ ✄ � ✆ ✂ ✌ ☞ ✂ ✁ ✆ ✄ ✁ � ✁ � ✁ ✟ ✁ ✁ ✟ � ✁ ✄ ✂ ✁ � ✁ ✟ ✆ ✁ ✟ ✄ � � ✡ ✄ ☛ ✄ ✡ ✄ � ✄ ✄ ✄ ✁ � ✁ ✂ ✄ ✁ ☎ ✄ � � ✄ ✂ ✄ � ✄ ✄ ☎ ✄ ✂ ✂ ✂ � ✌ � ✆ ✡ ✟ � ☎ � � ✂ � ✁ � ✁ ☞ � � ✡ ✄ ✡ � � ✡ ✂ � � ☎ Propositional equality where data �✂✁ let let

  58. � Problems with An Introduction to Type Theory – p.15/32

  59. � Problems with Programs cluttered with coercions. An Introduction to Type Theory – p.15/32

  60. � Problems with Programs cluttered with coercions. Programming requires theorem proving. An Introduction to Type Theory – p.15/32

  61. ✄ ☎ ✝ � ✂ ✁ � ✂ � ✆ ✂ � ✂ ✄ ✄ ✄ ✂ ✌ ✂ ✄ ✁ ✄ � ✄ � � ✁ ✁ Problems with Programs cluttered with coercions. Programming requires theorem proving. Equality on functions is not extensional, i.e. let cannot be derived. An Introduction to Type Theory – p.15/32

  62. Solutions ? An Introduction to Type Theory – p.16/32

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend