32
Expressiveness and Model of the Polymorphic λ Calculus Shin-Cheng Mu IIS, Sinica Friday, April 11, 14

Expressiveness and Model of the Polymorphic λ Calculus

Embed Size (px)

Citation preview

Page 1: Expressiveness and Model of the Polymorphic λ Calculus

Expressiveness and Model of the

Polymorphic λ Calculus Shin-Cheng Mu

IIS, Sinica

Friday, April 11, 14

Page 2: Expressiveness and Model of the Polymorphic λ Calculus

Motivation

• V. Vene in APLAS 2004 [GUV04] gave a new proof of shortcut deforestation because it was only proved “informally by theorem-for free.”

• But what’s wrong with theorem for free?

• So I studied polymorphism and realised that there is a lot I did not know...

Friday, April 11, 14

Page 3: Expressiveness and Model of the Polymorphic λ Calculus

Parametricity, or the “theorems for free.”

• Informally known by functional programmers as the “theorems for free.”

• A polymorphic function’s type induces a “theorem”.

• E.g. hd . map f = f . hd, for all hd:: [a]→a, regradless of its actual definition.

• The word “theorem” may be mis-leading, however.

[Wad89]

Friday, April 11, 14

Page 4: Expressiveness and Model of the Polymorphic λ Calculus

In this talk

• Review some members of the λ calculus family:• Untyped λ calculus: λx . x• Simply-typed λ calculus: λx:Int . x• Polymorphic λ calculus: Λα.(λx:α . x), Δα.α--->τ, f [a] x

• Consider their termination property, expressiveness, and model.

Friday, April 11, 14

Page 5: Expressiveness and Model of the Polymorphic λ Calculus

Untyped λ calculus

• Not always terminating: (λx.(x x))(λx.(x x))

• Recursion: Y f = (λx . f (x x))(λx . f (x x))

• Equivalent to Turing machine (Church & Kleene).

• Denotational model not trivial: requires Scott domains.

Friday, April 11, 14

Page 6: Expressiveness and Model of the Polymorphic λ Calculus

Simply-typed λ calculus

• Strongly normalisable: all well-typed expression terminates. Y combinator cannot be typed.

• Computes total functions only!

• Has a simple model of total functions and sets.

• Apparently cannot define some useful functions. But exactly how expressive?

Friday, April 11, 14

Page 7: Expressiveness and Model of the Polymorphic λ Calculus

The computability hierarchy

partial recursive (functions)

total recursive

primitive recursive

elementry recursive

Friday, April 11, 14

Page 8: Expressiveness and Model of the Polymorphic λ Calculus

Primitive recursion

• A function that can be implemented using only for-loops (math world). It always terminate.

• Zero: 0, succ: (1+), projection: (x1,...,xn)= xi.

• Composition: f o g.

• Primitive recursion: h(0,x) = f(x) h(n+1,x) = g (h(n),n,x)

Friday, April 11, 14

Page 9: Expressiveness and Model of the Polymorphic λ Calculus

Primitive recursion

• A function that can be implemented using only for-loops (math world). It always terminate.

• Zero: 0, succ: (1+), projection: (x1,...,xn)= xi.

• Composition: f o g.

• Primitive recursion: h(0,x) = f(x) h(n+1,x) = g (h(n),n,x)

h(0) = c h(n+1) = g (h(n),n)Familiar? It’s paramorphism! [Mee90]

Friday, April 11, 14

Page 10: Expressiveness and Model of the Polymorphic λ Calculus

Partial and total recursion

• Partial recursive functions: primitive recursion plus unbounded search: μf z = least x such that f(x,z) = 0.

• The search may not terminate, thus introduces the partiality.

• Partial rec. fn. is equiv. to Turing machine.• Total recursive functions: the subset of parital

rec. fn. that is total. It’s bigger than primitive recursive functions! (eg. Ackermann’s function.)

Friday, April 11, 14

Page 11: Expressiveness and Model of the Polymorphic λ Calculus

Elementary recursion

• Also called Kalmar elementary functions. Functions definable by 1, +, x, -., and

 SUM f (x,n) = Σni=0 f(x,i)

 PRO f (x,n) = Πni=0 f(x,i)

• Definable functions include: mod, div, isPrime, etc.

Friday, April 11, 14

Page 12: Expressiveness and Model of the Polymorphic λ Calculus

Representing natural num.

• Rep. of n over domain τ: λf:τ--->τ . λx:τ . f (... (f x)) with n occur. of f.

• If we allow different instantiation of τ, we can define addition, multiplication, exp(Ii+1--> Ii---> Ii), predecessor(Ii+3---> Ii)... but not subtraction.

• Therefore simply-typed calculus is weaker than elementary functions. Moreover, its value is bound by elementary fns.

Friday, April 11, 14

Page 13: Expressiveness and Model of the Polymorphic λ Calculus

• Use the type Δα.(α--->α)--->(α--->α) to represent natural numbers.

• addition, multiplication, subtraction,pairs,..

• primrec = Δα.λg:N--->α--->α.λc:α. λn:N.snd(n[Nxα]

(λz:Nxα.<1+fst z,g (fst z) (snd z)>) <0,c>)

Polymorphism enhances expressiveness

Friday, April 11, 14

Page 14: Expressiveness and Model of the Polymorphic λ Calculus

• Use the type Δα.(α--->α)--->(α--->α) to represent natural numbers.

• addition, multiplication, subtraction,pairs,..

• primrec = Δα.λg:N--->α--->α.λc:α. λn:N.snd(n[Nxα]

(λz:Nxα.<1+fst z,g (fst z) (snd z)>) <0,c>)

Polymorphism enhances expressiveness

primrec = Δα.λg.λc. λn.snd (n (λz.<1+fst z,g (fst z) (snd z)>) <0,c>)

Friday, April 11, 14

Page 15: Expressiveness and Model of the Polymorphic λ Calculus

Ackermann’s function!

Define ack without recursion?

[Rey85]

ack 0 n = n+1 ack (m+1) 0 = ack m 1 ack (m+1) (n+1) = ack m (ack (m+1) n)• Guess: ack = λm. m aug (1+) therefore ack (m+1) = aug (ack m)• ack (m+1) (n+1) = aug (ack m) (n+1) = ack m (aug (ack m) n) = ack m (ack (m+1) n)• We want aug f 0 = f 1 and aug f (n+1) = f (aug f n)• Solution: aug = λf. λn. (n+1) f 1

Friday, April 11, 14

Page 16: Expressiveness and Model of the Polymorphic λ Calculus

Simulating data structures

• Let list a = Δβ.(a--->β--->β) ---> β ---> β nil = Λβ.λf.λa.a cons x xs = Λβ.λf.λa. f x (xs f a)

• append xs ys = xs cons ys

• append = λxs:list a. λys:list a . xs[list a] (λx:a.λzs:list a . cons x zs) ys

[Rey85]

Friday, April 11, 14

Page 17: Expressiveness and Model of the Polymorphic λ Calculus

Simulating data structures

• Let list a = Δβ.(a--->β--->β) ---> β ---> β nil = Λβ.λf.λa.a cons x xs = Λβ.λf.λa. f x (xs f a)

• append xs ys = xs cons ys

• append = λxs:list a. λys:list a . xs[list a] (λx:a.λzs:list a . cons x zs) ys

! nil = Λβ.λf:a--->β--->β.λa:a.a cons x xs = Λβ.λf:a--->β--->β.λa:a. f x (xs f a)

[Rey85]

Friday, April 11, 14

Page 18: Expressiveness and Model of the Polymorphic λ Calculus

Where does it stand?

partial recursive (functions)

total recursive

primitive recursive

elementry recursive

Polymorphic λ

Simply-typed λ

Friday, April 11, 14

Page 19: Expressiveness and Model of the Polymorphic λ Calculus

Fundamental sequence

• Define f0(x) = x+1

• fn+1(x)= f xn(x) = fn(fn...(fn(x))..)... x applications.• f1(x)=2x, f2(x)=2x×x

• fΘ(x)=fΘ[x](x) for limit ordinal Θ.

• Limit ordinals: ω is the size of natural numbers, ε0 is the limit of ω, ωω, ωωω.....

Friday, April 11, 14

Page 20: Expressiveness and Model of the Polymorphic λ Calculus

Hierarchy characterised by rate of growth

• Running time of elementary functions are bounded by f n2(x) for some n.

• Time of primitive recursive functions are bounded by fn(x) for some n< ω.

• Ackermann’s function is essentially fω(x).• fε0(x) is representable in polymorphic λ

calculus!• It represents exactly the functions provably

recursive in 2nd-order arithmetic -- a much larger class than fε0(x).

[FLD83]

Friday, April 11, 14

Page 21: Expressiveness and Model of the Polymorphic λ Calculus

Termination

• Still, every function defined in poly-λ terminates.

• However, the termination cannot be proved in Peano arithmetic!• Peano arithmetic: 0, (1+), addition,

induction... covering most techniques we use in proofs of programs.

• Godel’s incompleteness theorem stated that there are true theorems not provable in PA. This was the first “interesting” example.

[FLD83]

Friday, April 11, 14

Page 22: Expressiveness and Model of the Polymorphic λ Calculus

Model for poly. λ calculus?

• Untyped λ: not terminating, needs domain.• Simple-typed λ: terminating, set-theoretic.

• λx:Int.x is the id for Int, λx:Char.x for Char.• Poly. λ: can we avoid using domains?• First try: a polymorphic function is a

collection of functions indexed by type.• Λα.λx:α.x is a collection of identity fns.

• However, that would include some ad-hoc functions.

Friday, April 11, 14

Page 23: Expressiveness and Model of the Polymorphic λ Calculus

Parametricity

• Reynolds restricts polymorphic objects to parametric values:• Let p: Δα.τ. It is parametric if for all set

assignments s1, s2, and r ⊆ s1×s2:

〈p s1, p s2〉∈ [id|α:r]#τ• Which later became “theorem for free”.

• Reynolds [Rey83] believed that there is a set-theoretic model for poly. λ where poly. objects represent parametric values.

• He then falsified his conjecture [Rey84].

[Wad89]

Friday, April 11, 14

Page 24: Expressiveness and Model of the Polymorphic λ Calculus

No simple model!

• Bool can be represented by B=Δα.α--->α--->α• Let Ts = (s--->B)--->B for all type s, and Tf = λh.λg.h(g o f) (for all f: s--->t, Tf: Ts--->Tt).

• Let P=(((s--->B)--->B)--->s)--->s. We can construct a h: TP--->P s.t. the diagram commutes for all f.

• In fact h is an initial algebra! • But that would make TP isomorphic to P,

which is a contradiction (they have diff. cardinalities unless |B|=1).

hP TP

s Ts

Tgg

f

[Rey84]Polymorphism is not set-theoretic.

∀f. ∃g.

Friday, April 11, 14

Page 25: Expressiveness and Model of the Polymorphic λ Calculus

Later models

• Using topos [Pit87]Poly. is set-theoretic, constructively.

• Frame [BM84][MM85][Wad89].

• Functorial approach [BFS90].

• Operational aspects [Pit00].

• Used to prove short-cut fusion [Joh03].

Friday, April 11, 14

Page 26: Expressiveness and Model of the Polymorphic λ Calculus

What’s the use of parametricity?

• It’s still a key concept! Recall representation of lists: llist a = Δβ.(a--->β--->β) ---> β ---> β.

• In general, the least fixed-point of functor F (or the inital F-algebra) can be represented by Δβ.(F β--->β) ---> β... iff parametricity holds!

• Types defined as least-fixed-points are called inductive.

• nil = Λβ.λf.λa.a, cons x xs = Λβ.λf.λa. f x (xs f a), x = cons 1 (cons 2 (cons 3 nil).

[Has94]

Friday, April 11, 14

Page 27: Expressiveness and Model of the Polymorphic λ Calculus

Inductive and coinductive datatypes

• The greatest fixed-point of functor F can be represented by ∃x.(x → F x, x), iff parametricity holds. It’s called coinductive.

• from n = (λm.Right (m,m+1), n) :: glist a

• When least and greatest fixed-points coincide (i.e. exists a force:: glist a →llist a), we can do hylomorphism.

[Has94][How96]

Friday, April 11, 14

Page 28: Expressiveness and Model of the Polymorphic λ Calculus

Pointed types

• In a model where parametricity and extensionality holds, the following are equivalent:

• Inductive and coinductive types coincide;

• Exists a fixed-point operator for values;

• Exists a fixed-point operator for types.

[Has94] ?

Friday, April 11, 14

Page 29: Expressiveness and Model of the Polymorphic λ Calculus

Conclusion

Termination Expressiveness Model

Untyped NO = Turing machine

domain

Simply typed YES < elementry fn. set & functio

nPolymorphic

YES but not provable in

PA> Ackermann

domain or non-trivial

sets

Friday, April 11, 14

Page 30: Expressiveness and Model of the Polymorphic λ Calculus

What I learnt from this history study...

• Adding polymorphism to a language strongly enhances its power.

• The concept of fold, etc., finds its root in very fundamental research.

• Category theory has played an important role in early stage of computing science.

• Parametricity is an important assumption leading to many useful properties.

Friday, April 11, 14

Page 31: Expressiveness and Model of the Polymorphic λ Calculus

References

• [FLD83] S.Fortune, D. Leivant, M. O’Donnell, The expressiveness of simple and second-order type structures. In Journal of the ACM, 30(1), pp 151-185.

• [Rey83] J.C. Reynolds. Types, abstractions and parametric polymorphism. In Information Processing 83, pp 513-523.

• [BM84]K.B. Bruce, A.R. Meyer, The semantics of second-order polymorphic lambda calculus. In Semantics of Data Types, LNCS 173.

• [Rey84] J.C. Reynolds, Polymorphism is not set theoretic. In Semantics of data Types, LNCS 173, pp 145-156.

• [MM85] J.C. Mitchell, A.R. Meyer, Second-order logical relations. In Logics of Programs, LNCS 193.

• [Rey85] J.C. Reynolds, Three approaches to type structure. In Mathematical Foundations of Software Development, LNCS 185.

Friday, April 11, 14

Page 32: Expressiveness and Model of the Polymorphic λ Calculus

References• [Pit87] A.M. Pitts, Polymorphism is set theoretic, constructively. In

Category Theory and Computer Science, LNCS 283, pp 12-39.• [Wad89] P. Wadler, Theorems for free! In Int. Sym. on Functional

Programming Languages and Computer Architecture, ‘89.• [BFS90] E.S. Bainbridge, P.J. Freyd, A. Scedrov, P.J. Scott, Functorial

polymorphism. In Theoretical computer science v.70, pp 36-54.• [Mee90] L. Meertens, Paramorphisms. In Formal Aspects of Computing.• [Has94] R. Hasegawa. Categorical data types in parametric

polymorphism. Math. Structures in Computer Science, March 1994.• [How96] B.T. Howard. Inductive, coinductive, and pointed types. ICFP 96.• [Pit00] A.M. Pitts, Parametric polymorphism and operational equivalence.

In Math. Struct. in Comp. Science v.10, pp 1-39.• [Joh03] P. Johann, Short cut fusion is correct. In J. Functional Programming

v.13, pp 797-814.• [GUV04]N. Ghani, T. Uustalu, V, Vene, Build, augment and destory. In

APLAS 2004, LNCS 3002, pp 327-347.

Friday, April 11, 14