Types, Abstraction, and Parametric Polymorphism John C. Reynolds - - PowerPoint PPT Presentation

types abstraction and parametric polymorphism
SMART_READER_LITE
LIVE PREVIEW

Types, Abstraction, and Parametric Polymorphism John C. Reynolds - - PowerPoint PPT Presentation

Types, Abstraction, and Parametric Polymorphism John C. Reynolds Presented by Dietrich Geisler Abstraction Dietrich Geisler (With apologies to John C. Reynolds) What is Abstraction? 1. Define complex numbers 2. When are they equal? 1.


slide-1
SLIDE 1

Types, Abstraction, and Parametric Polymorphism

John C. Reynolds Presented by Dietrich Geisler

slide-2
SLIDE 2

Abstraction

Dietrich Geisler (With apologies to John C. Reynolds)

slide-3
SLIDE 3

What is Abstraction?

Professor Descartes Professor Bessel

  • 1. Pairs of real numbers
  • 2. Equality of components
  • 1. Define complex numbers
  • 2. When are they equal?
  • 1. Pairs of real numbers; first

component is nonnegative

  • 2. Equality of first component

AND second component differs by multiple of 2π

slide-4
SLIDE 4

Some Context

Published in 1983

Previous Papers: Recursive Functions (1960) Axiomatic Basis (1969) CBN and CBV (1975) Intel 80286 Processor: 10 MHz clock rate No memory cache Higher-level languages: Scheme 1973 ML 1975 C++ 1980

slide-5
SLIDE 5

Sets and Types

If e1 has type ω→ω’ and e2 has type ω Then the result of applying e1 to e2 has type ω’

slide-6
SLIDE 6

Some Notation

S # *

Set Assignment (e.g. S(𝜐) = {0, 1, 2}) Extension to constants, pairs, and functions e.g. S# (ω x ω’) = S#ω x S#ω’ Extension to a context (Works pointwise over the map)

slide-7
SLIDE 7

Some Semantics

slide-8
SLIDE 8

Semantics of Pairs

slide-9
SLIDE 9

Sets are related using pairs of set elements under Rel(s1, s2) Functions and pairs are related if each component is related R is the pointwise relation between two set interpretations of types S1, S2

How to compare set assignments?

slide-10
SLIDE 10

What is an Abstraction? (Formally)

Evaluating expressions maps related arguments to related results

slide-11
SLIDE 11

Extending this to a Typing Theorem

slide-12
SLIDE 12

What Happened to this work?

Some was folded into System F Rust is starting to use some relational proofs Ideas behind free theorems (e.g. properties λf : α→α?)