Life and Work of Dr.Robin MilnerBy:Dr. Navin Kabra, Co-Founder andCTO, ReliScore.com
Robin MilnerTuring Award 1991 For LCF – Automated Theorem Proving ML – Programming Language            With Polymorphic...
“  A key ingredient in all of his work has been hisability to combine deep insight into mathematical foundations of the su...
Outline    Importance of Types    Polymorphic Types    Type Inferencing    ML    Life and Work of Robin Milner
Disclaimers    Not an Expert    Brief Overviews Only    High-level Handwaving
PYTHON:def total(collection):    tot = 0    for item in collection:        tot += item    return totJAVA:import java.util....
Java is a typed languagePython has no types (???)
Java is a statically typed language   Python is dynamically typed
Java: types checked at compile-time Python: types checked at runtime
PYTHON:def total(collection):    tot = 0    for item in collection:        tot += item    return totJAVA:import java.util....
PYTHON:def total(collection):    tot = 0    for item in collection:        tot += item    return totJAVA:import java.util....
Java: saferPython: easier
The problem of generic computation
PYTHON:def total(collection):               Works for List of any    tot = 0                          type that supports +...
GENERIC Types in JAVA:import java.util.*;class Main<T> {      public static T total(List<T> collection) {          T tot =...
GENERIC Type Examples:class MyList<T> {    T[] array_of_items;    public MyList<T>() {        this.array_of_items = new T[...
Type Inferencing
Java (static typing): saferPython (dynamic typing): easier
Inferring Types    All types need not be user-    specified    Compiler can infer types
int f(String s) {   return s.string_length;}int g(String x, int y) {   return f(x) + y;}
f(String s) {   return s.string_length;}g(x, y) {  return f(x) + y;}-------Type inferencings.string_length is int hence re...
f(s) {   return s.string_length;}g(x, y) {  return f(x) + y;}-------Type inferencings is any type that allows s.string_len...
f(s) {   return s.length;}g(x, y) {  return f(x) + y;}-------Type inferencings is any type that allows s.lengthLets call t...
f(s) {   return s.length;}g(x, y) {  return f(x) + y;}-------Type inferencing ... continuedMore inferencing possible: if S...
Type Inferencing – Conceptual View    Program consists of literals,    variables and expressions    Literals have fixed ...
Type Inferencing – Basic Idea    Every expression imposes    constraints on possible types of    variables    Find an as...
Most General Type    Case 1: x is int, y is List<int>, f is    function taking int, List<int> and    returning int    Ca...
ML
ML    Milners ML first programming    language with polymorphic type    inference    Direct Influence on F#, Scala,    O...
ML Features    Impure functional programming    language            Allows side-effects    Features            Call-by...
MLSolid Mathematical Foundation, but        Practical Language
Why ML?
Life & Work of Robin Milner
Robin Milner – Early Life    Born in UK – military family            Second Lieutenant in Royal Engineers    1950s: Kin...
First Programming            Experience                       “  Programming was not a very beautiful thing. Iresolved I w...
Early Life - Contd    No PhD    1 year as a school teacher    2 years of National Service – Suez    Job for Computer M...
Entry to Academia    1963 City University London:            “moved to academia with a passionate belief that a        d...
Program Semantics    1968: Exposure to Christopher    Strachey & Dana Scott            “Computable Functionals”        ...
Automated Theorem Proving    Program Verification            Manually intensive, boring, error-prone job    Milners ide...
Assisted Theorem Proving    1971-1973 Stanford            Exposure to John McCarthys AI program            Milners idea...
Stanford LCF    Interactive user-driven proof    system    Computer given goals, sub-goals    Computer constructs whole...
Whats a Proof?    Start with axioms            Known facts    And inference rules            Method of generating new ...
Proof Assistant    Understands axioms, inference    rules    Understands standard patterns of    proof            e.g. ...
Applications of Theorem Proving    Intel/Motorola use for chip    verification            FDIV bug
Generalizing Theorem Proving    How to add new tactics and new    tacticals to a proof assistant    How to prove that th...
Meta Language    Language to define:            Axioms            Inference Rules            Patterns of Proof (Tactic...
ML Requirements - Broad    Solve practical problems    Use absolute minimum concepts    Rigorously defined and analyzed
ML Requirements -              Detailed    Algebra based (not hardware)    Very simple foundation    Orthogonal ideas  ...
ML Design    Needs of theorem proving    influenced design    Narrow focus = simple/elegant    language    But (surpris...
Problems with LCF    Works only for simple sequential    programs            What about concurrent programs?           ...
CCS    1980s    Theoretical foundation for    provable correctness of concurrent    programs    Modeling of shared data...
After Turing Award    Pi-calculus    Theory of comunicating and    mobile programs    Allow network topology to change ...
Impact of pi-calculus    spi-calculus used in proofs of    cryptographic protocols    Stochastic pi-calculus used in    ...
Challenges    Need mathematical foundations    for:            Data provenance            Privacy            Authoriza...
Milner died on 20 March 2010               th   but his work lives on
“  A key ingredient in all of his work has been hisability to combine deep insight into mathematical foundations of the su...
Upcoming SlideShare
Loading in...5
×

Life & Work of Robin Milner | Turing100@Persistent

817

Published on

During 4th Tech Talk session of Turing100@Persistent, Dr. Navin Kabra, Co-Founder and CTO, ReliScore.com talks about 1991 ACM Turing Award Recipient,Dr. Robin Milner

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
817
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Life & Work of Robin Milner | Turing100@Persistent

  1. 1. Life and Work of Dr.Robin MilnerBy:Dr. Navin Kabra, Co-Founder andCTO, ReliScore.com
  2. 2. Robin MilnerTuring Award 1991 For LCF – Automated Theorem Proving ML – Programming Language  With Polymorphic Type Inference  Type-Safe Exception Handling CCS – A General Theory of Concurrency
  3. 3. “ A key ingredient in all of his work has been hisability to combine deep insight into mathematical foundations of the subject with an equally deep understanding of practical and aesthetic issues,thus allowing the feedback of theory into practice in an exciting way. ”
  4. 4. Outline Importance of Types Polymorphic Types Type Inferencing ML Life and Work of Robin Milner
  5. 5. Disclaimers Not an Expert Brief Overviews Only High-level Handwaving
  6. 6. PYTHON:def total(collection): tot = 0 for item in collection: tot += item return totJAVA:import java.util.*;class Main { public static int total(List collection) { int tot = 0; Iterator it = collection.iterator(); while (it.hasNext()) { Integer item = (Integer)it.next(); tot += item; } return tot; }}
  7. 7. Java is a typed languagePython has no types (???)
  8. 8. Java is a statically typed language Python is dynamically typed
  9. 9. Java: types checked at compile-time Python: types checked at runtime
  10. 10. PYTHON:def total(collection): tot = 0 for item in collection: tot += item return totJAVA:import java.util.*;class Main { public static int total(List collection) { int tot = 0; Iterator it = collection.iterator(); while (it.hasNext()) { Integer item = (Integer)it.next(); tot += item; } return tot; }}
  11. 11. PYTHON:def total(collection): tot = 0 for item in collection: tot += item return totJAVA:import java.util.*;class Main { public static int total(List<Integer> collection) { int tot = 0; Iterator<Integer> it = collection.iterator(); while (it.hasNext()) { tot += it.next(); } return tot; }}
  12. 12. Java: saferPython: easier
  13. 13. The problem of generic computation
  14. 14. PYTHON:def total(collection): Works for List of any tot = 0 type that supports + for item in collection: tot += item return totJAVA:import java.util.*;class Main { public static int total(List<Integer> collection) { int tot = 0; Iterator<Integer> it = collection.iterator(); while (it.hasNext()) { tot += it.next(); } return tot; Works for List of } Integer only}
  15. 15. GENERIC Types in JAVA:import java.util.*;class Main<T> { public static T total(List<T> collection) { T tot = 0; Iterator<T> it = collection.iterator(); while (it.hasNext()) { tot += it.next(); } return tot; }}
  16. 16. GENERIC Type Examples:class MyList<T> { T[] array_of_items; public MyList<T>() { this.array_of_items = new T[10]; } public T getElem(int n) { return this.array_of_items[n]; } public void bubbleSort() { for(int i=0; i<array_of_items.length; i++) { for(int j=0; j<i; j++) { if (compare(array_of_items[i], array_of_items[j]) > 0) { T tmp = array_of_items[i]; array_of_items[i] = array_of_items[j]; array_of_items[j] = tmp; } } }}
  17. 17. Type Inferencing
  18. 18. Java (static typing): saferPython (dynamic typing): easier
  19. 19. Inferring Types All types need not be user- specified Compiler can infer types
  20. 20. int f(String s) { return s.string_length;}int g(String x, int y) { return f(x) + y;}
  21. 21. f(String s) { return s.string_length;}g(x, y) { return f(x) + y;}-------Type inferencings.string_length is int hence return-type of f is intf(x) is called, so x is Stringf(x) returns int, so f(x) + y is intHence return-type of g is int
  22. 22. f(s) { return s.string_length;}g(x, y) { return f(x) + y;}-------Type inferencings is any type that allows s.string_lengthOnly String has s.string_length, so s is Strings.string_length is intSo f is function that takes String and returns intf(x) returns int, so f(x) + y is intHence return-type of g is int
  23. 23. f(s) { return s.length;}g(x, y) { return f(x) + y;}-------Type inferencings is any type that allows s.lengthLets call that type Ss.string_length depends upon SLet type of s.string_length be LSo f is function that takes S and returns Lf(x) + y, so L must support +If only integers support + then L is intThen f is function that takes S and returns intg is a function that takes S, int and returns int
  24. 24. f(s) { return s.length;}g(x, y) { return f(x) + y;}-------Type inferencing ... continuedMore inferencing possible: if String is the only class that has s.length returning int, then S is String
  25. 25. Type Inferencing – Conceptual View Program consists of literals, variables and expressions Literals have fixed types Variables types have to be inferred
  26. 26. Type Inferencing – Basic Idea Every expression imposes constraints on possible types of variables Find an assignment of types that satisfies all constraints “Unification” problem
  27. 27. Most General Type Case 1: x is int, y is List<int>, f is function taking int, List<int> and returning int Case 2: x is T, y is List<T>, f is function taking T, List<T> and returning T
  28. 28. ML
  29. 29. ML Milners ML first programming language with polymorphic type inference Direct Influence on F#, Scala, OCaml, Java Indirect influence on most modern
  30. 30. ML Features Impure functional programming language  Allows side-effects Features  Call-by-value (greedy)  First class functions  Garbage collection
  31. 31. MLSolid Mathematical Foundation, but Practical Language
  32. 32. Why ML?
  33. 33. Life & Work of Robin Milner
  34. 34. Robin Milner – Early Life Born in UK – military family  Second Lieutenant in Royal Engineers 1950s: Kings College Cambridge  B.Sc. Math & Philosophy  First exposure to programming − (Assembly!)
  35. 35. First Programming Experience “ Programming was not a very beautiful thing. Iresolved I would never go near a computer in my life. Millner found the activity of "writing oneinstruction after the other" to be "inelegant" and "arbitrary".
  36. 36. Early Life - Contd No PhD 1 year as a school teacher 2 years of National Service – Suez Job for Computer Manufacturer Ferranti  QA, Program Library Maintenance, Compiler
  37. 37. Entry to Academia 1963 City University London:  “moved to academia with a passionate belief that a deeper understanding of programming could form the basis for a more elegant practice.” Exposure to relational algebra  “but did not get very far with that”
  38. 38. Program Semantics 1968: Exposure to Christopher Strachey & Dana Scott  “Computable Functionals”  Abstract mathematical model for programs − Meaning of programs − “Denotational Semantics” Exposure to Provably Correct
  39. 39. Automated Theorem Proving Program Verification  Manually intensive, boring, error-prone job Milners idea: Use programs for automated proofs  Result: Toy programs only  Difficult to do anything interesting
  40. 40. Assisted Theorem Proving 1971-1973 Stanford  Exposure to John McCarthys AI program  Milners idea: assist human intelligence, dont replace it  Use machines to help humans do Strachey-Scott style proving − On practical examples
  41. 41. Stanford LCF Interactive user-driven proof system Computer given goals, sub-goals Computer constructs whole proof under user direction Reduces tedium, ensures
  42. 42. Whats a Proof? Start with axioms  Known facts And inference rules  Method of generating new facts from old ones Repeatedly apply rules to prove theorems
  43. 43. Proof Assistant Understands axioms, inference rules Understands standard patterns of proof  e.g. substitution, induction, simplification  “Tactics” Understands how to combine
  44. 44. Applications of Theorem Proving Intel/Motorola use for chip verification  FDIV bug
  45. 45. Generalizing Theorem Proving How to add new tactics and new tacticals to a proof assistant How to prove that they dont have bugs
  46. 46. Meta Language Language to define:  Axioms  Inference Rules  Patterns of Proof (Tactics)  Composition of Tactics (Tacticals) How  Data types, whose pre-defined values are axioms 
  47. 47. ML Requirements - Broad Solve practical problems Use absolute minimum concepts Rigorously defined and analyzed
  48. 48. ML Requirements - Detailed Algebra based (not hardware) Very simple foundation Orthogonal ideas  Study and analyze independently  Combine in powerful ways Easy to define and prove
  49. 49. ML Design Needs of theorem proving influenced design Narrow focus = simple/elegant language But (surprisingly?) wide applicability
  50. 50. Problems with LCF Works only for simple sequential programs  What about concurrent programs?  What about user inputs  What about non-deterministic behavior?
  51. 51. CCS 1980s Theoretical foundation for provable correctness of concurrent programs Modeling of shared data structures (memory locations)
  52. 52. After Turing Award Pi-calculus Theory of comunicating and mobile programs Allow network topology to change during program execution
  53. 53. Impact of pi-calculus spi-calculus used in proofs of cryptographic protocols Stochastic pi-calculus used in molecular biology Also used in business processes
  54. 54. Challenges Need mathematical foundations for:  Data provenance  Privacy  Authorization  Trust (amongst users)  Self-awareness  Self-management
  55. 55. Milner died on 20 March 2010 th but his work lives on
  56. 56. “ A key ingredient in all of his work has been hisability to combine deep insight into mathematical foundations of the subject with an equally deep understanding of practical and aesthetic issues,thus allowing the feedback of theory into practice in an exciting way. ”

×