WLPE12

242 views

Published on

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
242
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

WLPE12

  1. 1. Introduction Background Extensions Type Inference Implementation Results Conclusion . Implementation of a Gradual Polymorphic Type System with . Standard Subtyping for Prolog Spyros Hadjichristodoulou David S. Warren1 Stony Brook University Computer Science Department WLPE 2012Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 1 / 23
  2. 2. Introduction Background Extensions Type Inference Implementation Results ConclusionTypes in Prolog?Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 2 / 23
  3. 3. Introduction Background Extensions Type Inference Implementation Results ConclusionTypes in Prolog? . Theorem (Most Prolog Books) .. Prolog is an untyped language... .Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 2 / 23
  4. 4. Introduction Background Extensions Type Inference Implementation Results ConclusionTypes in Prolog? . Theorem (Most Prolog Books) .. Prolog is an untyped language... .Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 2 / 23
  5. 5. Introduction Background Extensions Type Inference Implementation Results ConclusionTypes in Prolog? . Theorem (Most Prolog Books) .. Prolog is an untyped language... .Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 2 / 23
  6. 6. Introduction Background Extensions Type Inference Implementation Results ConclusionPrevious works Mycroft-O’Keefe’s type system (DEC-10) Mercury, Visual Prolog Type inference by abstract interpretation (Barbuti,Giacobazzi - 1990s) Towards typed Prolog (Schrijvers, Santos Costa, Wielemaker, Demoen - 2009)Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 3 / 23
  7. 7. Introduction Background Extensions Type Inference Implementation Results ConclusionPrevious works Mycroft-O’Keefe’s type system (DEC-10) Mercury, Visual Prolog Type inference by abstract interpretation (Barbuti,Giacobazzi - 1990s) Towards typed Prolog (Schrijvers, Santos Costa, Wielemaker, Demoen - 2009) Why do Prolog vendors still keep it type-free?Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 3 / 23
  8. 8. Introduction Background Extensions Type Inference Implementation Results ConclusionOur vision A Gradual Polymorphic type system with SubtypingSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 4 / 23
  9. 9. Introduction Background Extensions Type Inference Implementation Results ConclusionOur vision A Gradual Polymorphic type system with Subtyping T . ype I .nference M . ore G . radual, U . . ntyped T . ypes T . ype I .ncremental P . rogram A . dded S . afe P . rocess P . ossibly U . nsafe T . ype C . hecking ( . user)Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 4 / 23
  10. 10. Introduction Background Extensions Type Inference Implementation Results ConclusionThe Mycroft-O’Keefe Type System . Example 1 .. :- type list(A) ---> [] ; [A|list(A)]. :- pred append(list(A),list(A),list(A)). append([],L,L). . append([X|L1],L2,[X|L3]) :- append(L1,L2,L3).Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 5 / 23
  11. 11. Introduction Background Extensions Type Inference Implementation Results ConclusionThe Mycroft-O’Keefe Type System . Example 1 .. :- type list(A) ---> [] ; [A|list(A)]. :- pred append(list(A),list(A),list(A)). append([],L,L). . append([X|L1],L2,[X|L3]) :- append(L1,L2,L3). Prolog codeSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 5 / 23
  12. 12. Introduction Background Extensions Type Inference Implementation Results ConclusionThe Mycroft-O’Keefe Type System . Example 1 .. :- type list(A) ---> [] ; [A|list(A)]. :- pred append(list(A),list(A),list(A)). append([],L,L). . append([X|L1],L2,[X|L3]) :- append(L1,L2,L3). Prolog code Type constructorSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 5 / 23
  13. 13. Introduction Background Extensions Type Inference Implementation Results ConclusionThe Mycroft-O’Keefe Type System . Example 1 .. :- type list(A) ---> [] ; [A|list(A)]. :- pred append(list(A),list(A),list(A)). append([],L,L). . append([X|L1],L2,[X|L3]) :- append(L1,L2,L3). Prolog code Type constructor Type signatureSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 5 / 23
  14. 14. Introduction Background Extensions Type Inference Implementation Results ConclusionTowards Typed Prolog (2009) Implementation of the Mycroft-O’Keefe type system For SWI-Prolog and YAProlog Type checking Interaction between typed and untyped code Typed Prolog vs untyped PrologSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 6 / 23
  15. 15. Introduction Background Extensions Type Inference Implementation Results ConclusionType inference by abstract interpretation(1990s) A . bstract P . redicate A . bstraction R . epresentation fi .x Extension with type union Able to type metapredicates (univ/2)Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 7 / 23
  16. 16. Introduction Background Extensions Type Inference Implementation Results ConclusionActionScript and Erlang ActionScript: Gradual type systems: mixing static and dynamic type checking User has control over portion of program statically checked Recently added type inference Erlang: Dialyzer tool for static analysis Gradually applied Dialyzer to WranglerSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 8 / 23
  17. 17. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (1) ⊤ integer float ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 9 / 23
  18. 18. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (1) ⊤ c number t t t ) t ” integer float t t t t ” ) ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 9 / 23
  19. 19. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (1) ⊤ c number t . t Example 2 t .. ) t ” foo(42). integer float . foo(4.2). t t t t ” ) ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 9 / 23
  20. 20. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (1) ⊤ c number t . t Example 2 t .. ) t ” foo(integer). integer float . foo(float). t t t t ” ) ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 9 / 23
  21. 21. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (1) ⊤ c number t . t Example 2 t .. ) t ” foo(number). integer float . t t t t ” ) ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 9 / 23
  22. 22. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (2) ⊤ number atom t £ t £ ) t ” integer float £ £ t £ t £ t c£ ” t ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 10 / 23
  23. 23. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (2) ⊤ c atomic t t ) t ” number atom t £ t £ ) t ” integer float £ £ t £ t £ t c£ ” t ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 10 / 23
  24. 24. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (2) ⊤ c atomic t t . ) t ” Example 3 number atom .. t £ foo(42). t £ foo(4.2). ) t ” integer float £ . foo(bar). £ t £ t £ t c£ ” t ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 10 / 23
  25. 25. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (2) ⊤ c atomic t t . ) t ” Example 3 number atom .. t £ foo(integer). t £ foo(float). ) t ” integer float £ . foo(atom). £ t £ t £ t c£ ” t ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 10 / 23
  26. 26. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (2) ⊤ c atomic t t . ) t ” Example 3 number atom .. t £ foo(number). t £ ) t ” integer float £ . foo(atom). £ t £ t £ t c£ ” t ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 10 / 23
  27. 27. Introduction Background Extensions Type Inference Implementation Results ConclusionExtensions (2) ⊤ c atomic t t . ) t ” Example 3 number atom .. t £ foo(atomic). t £ ) t ” integer float £ . £ t £ t £ t c£ ” t ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 10 / 23
  28. 28. Introduction Background Extensions Type Inference Implementation Results ConclusionThe struct type . lookup/3 .. .Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 11 / 23
  29. 29. Introduction Background Extensions Type Inference Implementation Results ConclusionThe struct type . lookup/3 .. :- type list(A) --- [] ; [A|list(A)]. .Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 11 / 23
  30. 30. Introduction Background Extensions Type Inference Implementation Results ConclusionThe struct type . lookup/3 .. :- type list(A) --- [] ; [A|list(A)]. lookup([], ,0). . lookup([X’=’Y|T],X,Y) :- atom(X),integer(Y),lookup(T, , ).Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 11 / 23
  31. 31. Introduction Background Extensions Type Inference Implementation Results ConclusionThe struct type . lookup/3 .. :- type list(A) --- [] ; [A|list(A)]. :- pred lookup(list(struct),atom,integer). lookup([], ,0). . lookup([X’=’Y|T],X,Y) :- atom(X),integer(Y),lookup(T, , ).Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 11 / 23
  32. 32. Introduction Background Extensions Type Inference Implementation Results ConclusionThe struct type . lookup/3 .. :- type list(A) --- [] ; [A|list(A)]. :- type pair(A,B) --- A (=) B. :- pred lookup(list(struct),atom,integer). lookup([], ,0). . lookup([X’=’Y|T],X,Y) :- atom(X),integer(Y),lookup(T, , ).Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 11 / 23
  33. 33. Introduction Background Extensions Type Inference Implementation Results ConclusionThe struct type . lookup/3 .. :- type list(A) --- [] ; [A|list(A)]. :- type pair(A,B) --- A (=) B. :- pred lookup(list(pair(atom,integer),atom,integer)). lookup([], ,0). . lookup([X’=’Y|T],X,Y) :- atom(X),integer(Y),lookup(T, , ).Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 11 / 23
  34. 34. Introduction Background Extensions Type Inference Implementation Results ConclusionSubtyping relation ⊤   d   © ‚ d atomic struct t ¢ t ¢ ) t ” ¢ number atom ¢ t ¢ t ¢ ) t ” ¢ integer float ¢  t ¢  t  ¢  ” t c ¢  ~  ¢ ⊥Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 12 / 23
  35. 35. Introduction Background Extensions Type Inference Implementation Results ConclusionThe cult of the bound variableSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 13 / 23
  36. 36. Introduction Background Extensions Type Inference Implementation Results ConclusionThe cult of the bound variable Why even bother doing type inference?Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 13 / 23
  37. 37. Introduction Background Extensions Type Inference Implementation Results ConclusionThe cult of the bound variable Why even bother doing type inference? Similar method to “Type inference by abstract interpretation”Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 13 / 23
  38. 38. Introduction Background Extensions Type Inference Implementation Results ConclusionThe cult of the bound variable Why even bother doing type inference? Similar method to “Type inference by abstract interpretation” Infrastructure taken by “Towards Typed Prolog”Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 13 / 23
  39. 39. Introduction Background Extensions Type Inference Implementation Results ConclusionThe cult of the bound variable Why even bother doing type inference? Similar method to “Type inference by abstract interpretation” Infrastructure taken by “Towards Typed Prolog” Type variables vs Prolog variablesSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 13 / 23
  40. 40. Introduction Background Extensions Type Inference Implementation Results ConclusionThe cult of the bound variable Why even bother doing type inference? Similar method to “Type inference by abstract interpretation” Infrastructure taken by “Towards Typed Prolog” Type variables vs Prolog variables A . 2 T .2 . . A . 1 T .1Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 13 / 23
  41. 41. Introduction Background Extensions Type Inference Implementation Results ConclusionThe idea . General Idea .. repeat For a predicate H, let {H1 , . . . , Hn } be the heads of the clauses that define it for all Hi ∈ {H1 , . . . , Hn } do Let Hi : −Bi be the respective clause of H for all B ∈ Bi do Find the type of B and accumulate variable-type bindings for the entire clause end for The new type for H is the intersection of the types found for each Hi end for . until No change is made to the inferred type for HSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 14 / 23
  42. 42. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). TypeSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  43. 43. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 1 TypeSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  44. 44. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 1 TypeSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  45. 45. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 1 member(A,list(A)) TypeSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  46. 46. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 1 member(A,list(A)) TypeSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  47. 47. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 1 member(A,list(A)) member(B,list(C)) TypeSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  48. 48. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 1 member(A,list(A)) member(B,list(C)) Type member(A,list(A))Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  49. 49. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 1 Type member(A,list(A))Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  50. 50. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 2 Type member(A,list(A))Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  51. 51. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 2 Type member(A,list(A))Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  52. 52. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 2 member(A,list(A)) Type member(A,list(A))Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  53. 53. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 2 member(A,list(A)) Type member(A,list(A))Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  54. 54. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 2 member(A,list(A)) member(B,list(B)) Type member(A,list(A))Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  55. 55. Introduction Background Extensions Type Inference Implementation Results ConclusionAn example . Example 4: member/2 .. :- type list(A) --- [] ; [A|list(A)]. member(X,[X| ]). . member(X,[ |T]) :- member(X,T). Iteration 2 member(A,list(A)) member(B,list(B)) Type member(B,list(B))Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 15 / 23
  56. 56. Introduction Background Extensions Type Inference Implementation Results ConclusionOverview Compile Load Execute XSB Disk .PSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 16 / 23
  57. 57. Introduction Background Extensions Type Inference Implementation Results ConclusionOverview User 1 c Compile Load Execute XSB Disk .PSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 16 / 23
  58. 58. Introduction Background Extensions Type Inference Implementation Results ConclusionOverview User 1 c Compile Load Execute XSB Disk Type 2 Analysis .P XSBSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 16 / 23
  59. 59. Introduction Background Extensions Type Inference Implementation Results ConclusionOverview User 1 c Compile Load Execute XSB T 3 Disk Type 2 Analysis .P XSBSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 16 / 23
  60. 60. Introduction Background Extensions Type Inference Implementation Results ConclusionOverview User 1 c Compile Load Execute XSB T 4 3 Disk Type 2 Analysis .P XSB E .xwamSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 16 / 23
  61. 61. Introduction Background Extensions Type Inference Implementation Results ConclusionOverview User 1 c Compile Load Execute XSB T 4 T 3 Disk Type 2 Analysis .P 5 XSB E .xwamSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 16 / 23
  62. 62. Introduction Background Extensions Type Inference Implementation Results ConclusionOverview User 1 c Compile Load 6 E Execute XSB T 4 T 3 Disk Type 2 Analysis .P 5 XSB E .xwamSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 16 / 23
  63. 63. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling . |?- f(X). .. f(21). f(42). f(84). . . Global Table ..Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 17 / 23
  64. 64. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling . |?- f(X). .. f(21). f(42). f(84). . . Global Table .. f . (21).Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 17 / 23
  65. 65. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling . |?- f(X). .. f(21). f(42). f(84). . . Global Table .. f(21). f(42). .Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 17 / 23
  66. 66. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling . |?- f(X). .. f(21). f(42). f(84). . . Global Table .. f(21). f(42). f(84). .Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 17 / 23
  67. 67. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling with Answer Subsumption Answer SubsumptionSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 18 / 23
  68. 68. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling with Answer Subsumption . |?- f(X). .. f(21). f(42). f(84). . . Global Table .. Answer Subsumption Lattice operation: max/3Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 18 / 23
  69. 69. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling with Answer Subsumption . |?- f(X). .. f(21). f(42). f(84). . . Global Table .. f(21). . Answer Subsumption Lattice operation: max/3Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 18 / 23
  70. 70. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling with Answer Subsumption . |?- f(X). .. f(21). f(42). f(84). . . Global Table .. f(42). . Answer Subsumption Lattice operation: max/3Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 18 / 23
  71. 71. Introduction Background Extensions Type Inference Implementation Results ConclusionTabling with Answer Subsumption . |?- f(X). .. f(21). f(42). f(84). . . Global Table .. f(84). . Answer Subsumption Lattice operation: max/3Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 18 / 23
  72. 72. Introduction Background Extensions Type Inference Implementation Results ConclusionThe code (1) . Type inference: tabling with answer subsumption .. type inference n(Head,Type) :- copy term1(Head,Type), numbervars(Head,0, ). type inference n(Head,Type) :- copy term(Head,Head1), clause(Head1,Body), get env(Body,Env), compute type(Env,Head1,Type1), copy term(Type1,Type), . numbervars(Type,0, ).Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 19 / 23
  73. 73. Introduction Background Extensions Type Inference Implementation Results ConclusionThe code (2) . Lattice operation: unification .. type unify(X,Y,X1) :- unnumbervars(X,0,X1), unnumbervars(Y,0,Y1), X1 = Y1, . numbervars(X1,0, ).Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 20 / 23
  74. 74. Introduction Background Extensions Type Inference Implementation Results ConclusionResults (1) Name LOC # Def # Inf T(s) lib/pairlist.P 125 10 10 0.006 lib/lists.P 515 59 59 0.022 lib/ugraphs.P 850 90 90 0.102 lib/assoc xsb.P 566 49 48 0.029 lib/ordsets.P 422 39 39 0.023 examples/tree1k.P 2046 1 1 0.105Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 21 / 23
  75. 75. Introduction Background Extensions Type Inference Implementation Results ConclusionWhat’s next? D . eclaration Free T . . est/Debug M . odules M . etapredicatesSpyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 22 / 23
  76. 76. Introduction Background Extensions Type Inference Implementation Results Conclusion Thanks for your attention :-)Spyros Hadjichristodoulou David S. Warren Impl. of a Gradual Pol. Type System with St. Subtyping for Prolog 23 / 23

×