******************************************************************************** A rough-and-ready guide to Igor2 May 2008 Martin Hofmann and Emanuel Kitzelmann Contact: martin[dot]hofmann[at]uni[hyphen]bamberg[dot]de emanuel[dot]kitzelmann[at]uni[hyphen]bamberg[dot]de Links: http://www.cogsys.wiai.uni-bamberg.de/effalip/download.html http://www.inductive-programming.org/resources/systems/#igor2 -------------------------------------------------------------------------------- WARRANTY Unless otherwise stated, the software on this site is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IGOR2 is free for evaluation, research and teaching purposes, but not for commercial purposes. If you intend to use the system for commercial purposes please contact us. -------------------------------------------------------------------------------- ******************************************************************************** ################## Remarks ################## Thank you for being interested in IGOR2. This system is part of ongoing research, so please neither expect a complete nor correct both system not documentation. Sorry for that, but if you have questions or you need support, we would be glad if you contacted as. ################## IGOR2.2 ################## Let's get started: ------------------- First you need to install the MAUDE interpreter from http://maude.cs.uiuc.edu/ There you will also find any installation instructions you need. Igor's code is shared between two directories, TermExtensions/ and IGOR2.2/. (The x is the (sub)version number. At the moment either 2 or 3) The file IGOR2.2/igor2.2.maude contains the main program. At the beginning all dependent file are loaded. They are referenced with absolute path names, so you'll need to change them! Maude modules are loaded into the interpreter with load 'filename' So you do with igor2.2.maude and the file containing the example modules unless it has not been loaded automatically. Synthesis is started with the command: reduce in IGOR : setup('PROBLEM, 1, false) . where the module PROBLEM contains a specification for IGOR. 'PROBLEM is its accordant module name in Maude's meta-language. Problem Specification: ---------------------- The specification of a problem is Maude code, so please consult the Maude manual for questions concerning the syntax. Note that a line must end with ' .' (mind the space)! A specification module must define all used data types. The constructors, including used constants, must be labelled with '[ctor]'. The op-statement of the target function must be labelled with [metadata "induce"]. Other background functions are labelled with [metadata ""] or if they should be used as predicates with [metadata "pred"]. If so, the are used as predicate *and* background function. If they should be used as predicates exclusively, use [metadata "pred nomatch"] Every target as well as every background function needs an op-statement for a "dummy"-constructor. It has the same domain as the target/bk function, but a "dummy" sort as co-domain. This must also be included into the sorts-statement. normally this sort is called InVec. Finally, the input/output examples are stated as equations. The Solution: ------------- The solution is a 'HypoList', so one or more hypotheses separated with 'nextHypo'. If the hypothesis are semantically different, you should provide more examples. Each hypothesis is a triple hypo(_,_,_). (The accordant data type is defined in the module FINISH in igor2.2.maude.) The first component should always be 'true', denoting that the hypothesis is finished. the second component is a natural number stating the number of partitions the examples are divided. The third is a list with (conditional) equations, the actual solution. They all have the form eq LHS = RHS or ceq LHS = RHS if Condition The equations are in META-form. ################## IGOR2.3 ################## Changes with respect to IGOR2.2: Setup: no path changes necessary Starting: reduce generalize('MODULE) .