✁ � ✂ ✄ Normalization by evaluation for Thorsten Altenkirch Tarmo Uustalu University of Nottingham Tallinn Technical University Normalization by evaluationfor – p.1/21
✁ ✂ ✄ Motivation Normalization by evaluationfor – p.2/21
� ✁ ✂ ✄ Motivation Implementations of typed -calculi to support type-directed construction of certified, correct programs . Normalization by evaluationfor – p.2/21
✁ � ✂ ✄ Motivation Implementations of typed -calculi to support type-directed construction of certified, correct programs . Normalisation of evaluation (NbE) used in the actual implementation of recent tools such as Epigram . Normalization by evaluationfor – p.2/21
✁ � ✂ ✄ Motivation Implementations of typed -calculi to support type-directed construction of certified, correct programs . Normalisation of evaluation (NbE) used in the actual implementation of recent tools such as Epigram . Offers efficent implementations and straightforward correctness arguments. Normalization by evaluationfor – p.2/21
� ✁ � ✁ ✂ ✁ ✂ ✄ More motivation Goal: make equality more extensional . From to . Normalization by evaluationfor – p.3/21
� � ✄ � ✁ ✂ � ✁ ✂ ✁ � � � ✁ More motivation Goal: make equality more extensional . From to . Study simple calculi first - here = simple types ( ) + booleans ( ). Normalization by evaluationfor – p.3/21
✁ � ✄ � ✁ ✂ � ✁ ✂ ✁ � � � � More motivation Goal: make equality more extensional . From to . Study simple calculi first - here = simple types ( ) + booleans ( ). Discuss extensions to more interesting systems. Normalization by evaluationfor – p.3/21
✂ � � � ✁ ✄ � ✁ ✂ � ✁ � � ✁ More motivation Goal: make equality more extensional . From to . Study simple calculi first - here = simple types ( ) + booleans ( ). Discuss extensions to more interesting systems. Use type-theoretic methodology (on paper). Normalization by evaluationfor – p.3/21
✂ � � � ✁ ✄ � ✁ ✂ � ✁ � � ✁ More motivation Goal: make equality more extensional . From to . Study simple calculi first - here = simple types ( ) + booleans ( ). Discuss extensions to more interesting systems. Use type-theoretic methodology (on paper). Here: Haskell as a poor man’s type theory. Normalization by evaluationfor – p.3/21
� � ✄ � ✁ ✂ � ✁ ✂ ✁ � � � ✁ More motivation Goal: make equality more extensional . From to . Study simple calculi first - here = simple types ( ) + booleans ( ). Discuss extensions to more interesting systems. Use type-theoretic methodology (on paper). Here: Haskell as a poor man’s type theory. In future: implementation within epigram. Normalization by evaluationfor – p.3/21
✁ ✂ ✄ The simplest typed -calculus? Normalization by evaluationfor – p.4/21
� � ✁ ✂ ✄ The simplest typed -calculus? needs type-variables Normalization by evaluationfor – p.4/21
� � ✁ ✂ ✄ The simplest typed -calculus? needs type-variables not as simple as it looks! Normalization by evaluationfor – p.4/21
✁ � � � � � � � ✁ ✄ ✂ The simplest typed -calculus? needs type-variables not as simple as it looks! , without type-variables Normalization by evaluationfor – p.4/21
� � � � ✄ ✂ � � � ✁ ✁ The simplest typed -calculus? needs type-variables not as simple as it looks! , without type-variables are equationally inconsistent. Normalization by evaluationfor – p.4/21
✁ � � � ✄ ✂ � � � ✁ � � ✁ � The simplest typed -calculus? needs type-variables not as simple as it looks! , without type-variables are equationally inconsistent. without type-variables Normalization by evaluationfor – p.4/21
✁ � ✂ ✁ � � ✄ ✁ � � � � � � � The simplest typed -calculus? needs type-variables not as simple as it looks! , without type-variables are equationally inconsistent. without type-variables the simplest (interesting) typed -calculus! Normalization by evaluationfor – p.4/21
� ✁ ✂ ✄ in a nutshell Normalization by evaluationfor – p.5/21
� ✏ ✁ ☞ ✑ ✒ ✓ ✎ � ✆ ✏ ✁ ☞ ✑ ✁ ✂ ✄ ✏ � ✄ ✡ ✍ ✍ ✌ ☞ ✎ ✡ ✍ ✏ ☞ ☎ in a nutshell �✂✁ ✞✠✟ ✡✠☛ ✌✠✍ ☎✝✆ Normalization by evaluationfor – p.5/21
– p.5/21 ✞ ✁ ✂ � ✎ ✂ ✁ � ☎ ☛ ✡ ✟ ☎ ✒ ✄ ✎ ✓ ✒ ✁ � ✁ ✏ ✂ ✁ � � ✓ � � ✄ ✂ ✁ ✁ ✄ � ✁ ✁ ✏ � ✁ ✏ ✎ � ✎ ✓ ✒ ✂ ✁ � ✁ ✁ ✏ � ✏ ✁ � ✏ ✏ ✏ ✎ ✓ ✒ ✑ ☞ ✁ ✏ ✆ � ✡ ✁ ✍ ✍ ✌ ☞ ✎ ✡ ✍ ☞ ☎ ✄ ✏ � ☞ ✁ ☎ ☛ ✡ ✓ ✒ ✁ � � ✑ ✂ ✏ � ☎ ✒ ✓ ✄ ✏ ✏ � ✏ ✁ Normalization by evaluationfor in a nutshell ✌✠✍ ✡✠☛ ✞✠✟ ☎✝✆ �✂✁ �✂✁ ✞✠✟ �✂✁
– p.5/21 ✏ ✏ � ✁ � ✏ � ✎ ✓ ✒ ✂ ✁ � ✁ ✁ � ✁ ✎ ✡ ☛ ☎ � ✁ ✂ � ✏ ✂ ✁ � ✒ ✓ ✎ ✁ � ✞ � ✆ ✑ ✁ ✄ � ✁ ✂ � ✆ ✑ ✁ ✁ ✂ ✄ ✂ ✁ ✄ ☎ ✁ � ✁ � ✂ ✄ � � � ✆ ✆ ✑ ✁ ✝ ✟ � ✄ ✁ ✄ ✒ ✑ ☞ ✁ ✏ � ✏ ✎ ✓ ✒ ✑ ☞ ✏ ✏ ✆ � ✏ ✡ ✍ ✍ ✌ ☞ ✎ ✡ ✍ ☞ ☎ ✄ ☎ ✓ � ☎ ✎ ✓ ✒ ✁ � ✁ ✏ ✂ ✁ � ✁ ✏ ✏ ✏ � ☛ ✏ ✁ ✡ ✁ ✂ � � ✓ � ☎ ✒ ✁ Normalization by evaluationfor in a nutshell ✌✠✍ ✡✠☛ Categorically: ✞✠✟ ☎✝✆ �✂✁ �✂✁ ✞✠✟ �✂✁
– p.6/21 ✒ ✂ ✁ � ✓ ✓ ☞ ✝ ✒ ✝ ✝ � ✡ ✟ ✡ ✟ � ☛ ✡ ✟ ✓ ✜ ✑ ✆ ✜ � � ✢ ✓ ✜ � � ✚ ✢ � ✂✄ � ✚ ✙ ✄ ✂ ✑ � ✍ ✗ ✢ ✝ ☎ ✡ ☎ ✂✄ ✑ ✂ ☞ ✝ ✡ ✟ ✟ ✝ ☛ ✡ ✟ ✄ ✝ ✆ ☎ ✂✄ ✁ ✄ ✆ ✁ ✟ ✂ ✑ ✍ ✓ ☞ ✝ ✒ ✝ ✡ ✡ ✡ ☛ ✟ ✜ ✟ Normalization by evaluationfor ✒✛✚ ✞✠✟ ✞✠✟ ✞✠✟ ✆✌☞ ✆✌☞ ✆✌☞ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✒✛✚ ✔✖✕ Example ✔✖✕ ✍✏✎ ✍✏✎ ✄✘✗
– p.6/21 ✂✄ ✚ ✢ ✜ � � ✙ ✄ ✂ ✑ ✍ ✗ ✑ � ✂ ✁ � ✓ ✓ ☞ ✝ ✒ ✝ ✒ ✝ � ✜ ✟ ✂ ✄ ✂ ✁ ✄ ✂ ✑ ✂ ✁ ☎ � ✄ ✁ ✓ � ✓ ✜ � � ✚ ✢ ✜ � � ✢ � ✡ ✡ ✝ ✡ ✟ ✡ ✟ ☛ ✡ ✟ ✡ ✆ ✒ ☎ ✂✄ ✑ ☛ ☞ ✝ ✡ ✟ ✡ ✝ ✟ ✝ ✂ ✟ ✁ ☛ ✡ ✟ ✂✄ ✝ ✆ ☎ ✝ ✄ ✑ ☎ ✆ ✍ ✓ ☞ ✟ Normalization by evaluationfor ✒✛✚ ✞✠✟ ✞✠✟ ✞✠✟ ✆✌☞ ✆✌☞ ✆✌☞ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✒✛✚ ✔✖✕ Example ✔✖✕ ✍✏✎ ✍✏✎ ✍✏✎ ✄✘✗
– p.6/21 ✙ � � ✢ ✓ ✜ � � ✚ ✢ ✜ � � ✄ ✢ ✂ ✑ ✍ ✗ ✂✄ ✑ ✂ ✁ � ✓ ✓ � ✝ ✜ ✚ ✝ � ✄ ✂ ✁ ✂✄ ✑ ✍ ✂ ✁ ☎ ✄ ✂ ✁ ✄ � ✂ ✑ ✂ ✁ ☎ � ✄ ✂ ✁ � ✓ ✜ � ✒ ☞ ✒ ☞ ✟ ✝ ✟ ☛ ✡ ✟ ✝ ✆ ☎ ✂✄ ✑ ✝ ✝ ✡ ✟ ✡ ✟ ☛ ✡ ✟ ✝ ✆ ☎ ✂✄ ✁ ✡ ✡ ✒ ✂ ✟ ✡ ✟ ✡ ✝ ✝ ✆ ☎ ☛ ✄ ✓ ✑ ✡ ☞ ✍ ✟ Normalization by evaluationfor ✒✛✚ ✞✠✟ ✞✠✟ ✞✠✟ ✆✌☞ ✆✌☞ ✆✌☞ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✞✠✟ ✒✛✚ ✔✖✕ Example ✔✖✕ ✍✏✎ ✔✖✕ ✍✏✎ ✍✏✎ ✄✘✗
✁ ✂ ✄ Why ? Normalization by evaluationfor – p.7/21
Recommend
More recommend