Content
News
CfP: PEPM'10 at POPL'10
ACM SIGPLAN 2010 Workshop on Partial Evaluation and Program Manipulation (PEPM'10) co-located with POPL'10 in Madrd Spain - January 18-19 2010 - welcomes contributions on techniques for program synthesis and inductive programming. See the Call for Papers at http://www.program-transformation.org/PEPM10.
AAIP 09 deadline extension
The submission deadline for AAIP 09 has been extended to May 25th, 2009.
Mailing List problems fixed
Due to an Apache bug our mailing list didn't work properly. This should be fixed now. If you still encounter problems, please let us know (contact the admin).
Repository Online
Thanks to our project student Thomas Hieber we are glad to announce further progress iat one of our construction sites. He as updated the systems' section and started to build up a repository of example problems. A first set of systems is already compared in a uniform framework. Everybody who is missing a/his/her system is highly encouraged to contribute.
AAIP '09 accepted
The next workshop on Approaches and Applications of Inductive Programming 2009 (AAIP'09) will be held in conjunction with the 14th ACM SIGPLAN International Conference on Functional Programming (ICFP 2009). Detailed information can be found at the workshop homepage.
Repository
A repository of benchmark problems is the starting point for a competitive environment in which state-of-the-art inductive programming systems can match with each other. Based on a set of commonly known example problems, the most up-to-date IP systems ADATA, MagicHaskeller, Igor, Igor2.2, and Igor2.3 have been evaluated in a common framework. This initial repository is based on a student project by Thomas Hieber in winter term 2008/2009.
Everybody who is missing a/his/her system is highly encouraged to contribute!
Classification
The systems' classification is based on the following two papers:
-
Hofmann, Martin ; Kitzelmann, Emanuel ; Schmid, Ute: A unifying framework for analysis and evaluation of inductive programming systems. In: Hitzler, Pascal ; Hutter, Marcus (Hrsg.) : Proceedings of the Second Conference on Artificial General Intelligence(Second Conference on Artificial General Intelligence (AGI-09) Arlington, Virginia March 6-9 2009). . : ., 2009.
-
Hofmann, Martin ; Kitzelmann, Emanuel ; Schmid, Ute: Analysis and Evaluation of Inductive Programming Systems in a Higher-Order Framework. In: Dengel, A. ; Berns, K. ; Breuel, T. M. ; Bomarius, F. ; Roth-Berghofer, T. R. (Hrsg.) : KI 2008: Advances in Artificial Intelligence (31th Annual German Conference on AI (KI 2008) Kaiserslauten September 2008). Berlin : Springer, 2008, p. 78-86. (LNAI vol. 5243)
Symbol Table
| Symbol | Description | Symbol | Description |
|---|---|---|---|
| C | Constructors | rhs | Right Hand Side |
| FT | Function symbols of the functions to be synthesized | {·} | Singleton Set |
| FB | Symbols of predefined functions | º | Restricted/Unconditional Rules |
| FI | Function variables (function invention) | • | Unrestricted/Conditional Rules |
| E+ | Positive Examples | ∅ | Empty Set |
| E- | Negative Examples | ilc | If-Let-Case |
| BK | Background Knowledge | ∞ | Timeout (after 10 Minutes) |
| χM | High-Order-Functions | ⊥ | False Result |
| lhs | Left Hand Side | --- | Not Tested |
Characteristics
This is a short comparison of the system features in respect to their power and limits by comparing the quantity of constructors, synthesisable functions, predefined functions, function variables, examples (+/-), background knowledge and if they are capable of dealing with high-order-functions.
| C | FT | FB | FI | E+ | E- | BK | χM | |
|---|---|---|---|---|---|---|---|---|
| ADATE | • | {·} | • | • | • | • | • | ∅ |
| IGOR I | • | {·} | ∅ | • | º | ∅ | ∅ | ∅ |
| IGOR II | • | • | • | • | º | ∅ | º | ∅ |
| Magic Haskeller | • | {·} | • | ∅ | • | • | • | º |
Restriction Bias
The focus here is on the function term's left-hand-side, right-hand-side and on the constructs employed along the synthesis (if-let-case).
| F(i1,...,in)/lhs | rhs | vi/ui | |
|---|---|---|---|
| ADATE | ii ∈ χT | TC(χT) | ilc |
| IGOR I | ii ∈ TC(χT) | TC(χT) | - |
| IGOR II | ii ∈ TC(χT) | TC(χT) | i |
| Magic Haskeller | composition of functions from BK, higher-order via paramorphisms | ||
Programming Tasks
None of the problems were specially built to fit the needs of the system in order to be most efficient. Some problems were not tested on all of the systems (clearblock, hanoi...) - in this case "---" is used. MagicHaskeller for instance was used in a customized version, which is available for download in the download section. As there is a big difference in the usage of library vs. standalone MagicHaskeller both were tested since it might be interesting to see them in comparison. Igor1 is having trouble with natural numbers/peano numbers so problems consisting of those were skipped.
The generation of suitable input/output examples was basically aimed to keep them as easy and small as possible. It is not intended to fiddle around in order to make one system shine - but there are some problems where certain assumptions were to be made (especially with igor). But the most basic principle creating the inputs was to start with a small and easy set. As some systems demanded more/less examples along the way - some customizing was necessary in order to get any results. This may have led to a slightly incoherent approach on the large scale - but the intention was to create this repository to begin with, elaboration and tweaking intended and strongly encouraged. This is why every example specification used can be accessed, improved and re-evaluated.
All the Problems were executed on a Pentium 4 3.0GHz machine with 1024 MB RAM.
Problem Descriptions:
Both Igor2 and ADATE sometimes had to be eqipped with background knowledge in order to get some results. The functions provided are listed along with a short description of the problems in the repository. Note that MagicHaskeller's Library file always includes background knowledge.
| Problem | Description | BK |
|---|---|---|
| ack | Ackermann-Function | |
| add | Addition | |
| append | Append two lists | |
| car | Head of a list | |
| cdr | Tail of a list | |
| clearblock | Clear a Specific Block From a Blocksworld-Tower | |
| drop | Drop the first n elements from a list starting at the front | |
| eq | Equality of numbers | |
| even | Even numbers | |
| evenlist | List of even numbers | |
| evenodd | Even < Odd simultaneously | |
| evenpos | Filter even field positions from a list | |
| evenslist (alleven) | Only even numbers in a list | |
| fib | Fibonacci numbers | |
| geq | Greater than or equal | |
| hanoi | Towers of Hanoi | |
| insert | Insert into list | lt (lower than) |
| last | Last element of a list | |
| lasts | Combine the last elements of a list of lists to a new list | |
| length | Lenght of a list | |
| member | Test if element is member of a list | |
| mult | Multiplication | |
| multadd | Multiplication < Addition simultaneously | |
| multfirst | Replace every list element with the head | |
| multlast | Replave every list element with the last element | |
| odd | Odd numbers | |
| oddpos | Filter odd positions from a list | |
| oddslist (allodds) | Only odd numbers in a list | |
| reverse | Reverse list | |
| shiftl | Shift all list elements to the left | |
| shiftr | Shift all list elements to the right | |
| sort | Sort a list | insert, lt (lower than) |
| sum | Sum over all list elements | |
| swap | Swap first and last list element | |
| switch | Switch elemnts in a list pair-wise starting up front | |
| take-n | Take the n first elements from a list | |
| weave | Sew two lists together |
Further problems to be tested in the future:
- AND
- Binary Search
- Tree Deletion
- Binomial Coefficient
- Cartesian Product
- Check for Duplicates (lists)
- Count
- Factorial
- "Go East" (Michalsky Trains)
- >
- Halves (lists)
- Insert Last (lists)
- Intersect (lists)
- Locate Substring
- <
- Max
- Max Delete
- Merge (sorted lists)
- Min
- Min Delete
- Modulo
- OR
- Pack (lists)
- Partition (lists)
- Path Finding
- Permute
- Powerset (lists)
- Split (lists)
- Square Root
- String Comparison
- Transpose a Matrix
- Zip/Unzip (lists)
- DNF/CNF/NNF (logic)
- ...
Downloads:
- igor1 problems
- igor2 problems
- igor2 benchmark tool
- customized MagicHaskeller library
- MagicHaskeller problems