About inter4ql
-
- Inter4QL 5.2, prepared by Łukasz Białek, is a new version of the interpreter for a strongly typed version of 4QL. For a discussion of Inter4QL 5.2 see the Ph.D. Thesis by Ł. Białek. Its versions 5.1, 5.0, 4.0, 4.1 have been deveoped by Łukasz Białek, 3.0 has been deveoped by Aleksander Bułanowski, versions 2.0 - 2.3 and 2.5 have been developed by Łukasz Białek and version 2.4 has been developed by Łukasz Makar. They extend Inter4QL 1.0 developed by Patryk Spanily. For a discussion of Inter4QL 2.0 see the paper by Ł. Białek. For a discussion of Inter4QL 1.0 see the paper by P. Spanily.
- The interpreter has been developed for experimental/educational purposes.
- The package you can download contains:
- binaries for Windows and Linux
- sources in C++ ready for compilation under Windows and Linux
- documentation
- examples of simple 4QL programs, illustrating the syntax accepted by Inter4QL 5.2.
- Inter4QL 5.2 is a command line interpreter, allowing one to use the following commands:
- import "FILE PATH". - imports modules from a specified file;
- modules. - shows a list of available modules;
- actions. - shows a list of available actions;
- problems. - shows a list of available problems (for plannig);
- print NAME. - prints a declaration of specified module/action/problem;
- QUERY. - executes a valid query expressed by QUERY (e.g., module.relation(arguments).);
- execute PROBLEM_NAME. - executes planning on specified problem;
- clear. - restores interpreter to launch state debug. - shows status of debug switches;
- debug "SWITCH" enable/disable. - changes status of specified debug switch [evaluation/planning/composite/constraints];
- help. - shows available commands;
- exit. - exits the interpereter.
Licence (3-clause BSD License)
Copyright (c) 2021, 2022 Łukasz Białek, Aleksander Bułanowski, Łukasz Makar, Patryk Spanily, in respective parts. Based on foundational contributions by Jan Małuszyński, Andrzej Szałas, Barbara Dunin-Kęplicz, and the Copyright Holders. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
If you accept the above terms and conditions, please click here to download the package
Further information
-
Trademarks
- GNU Bison is a part of GNU Project is released under GNU General Public License.
- Flex: The Fast Lexical Analyzer is copyrighted by The Flex Project and is released under the BSD License.
- Doxygen is copyrighted by Dimitri van Heesch and is released under GNU General Public License.
- Windows is a trademark of Microsoft Corporation, registered in the United States and other countries.
- Linux is a registered trademark of Linus Torvalds.
-
Frequently asked questions
- Q: Example files do not load on Linux operating system (strange error at the end of the first line). What is wrong?
A: Those files are saved in Windows format. Change it to Linux format by using a tool like "unix2dos".
- Q: Example files do not load on Linux operating system (strange error at the end of the first line). What is wrong?
-
Revision History
- 21 April 2020: Inter4QL 5.2 by Łukasz Bialek:
- Features:
- New planning examples (simple test benchmarks) added.
- Introduced new debug module ("warning").
- Several minor improvements.
- Bugfixes:
- Goal probing heuristics now works for composite actions as well.
- Fixed problem with state restoring in composite actions.
- Fixed recognition of BEL operator in some expressions.
- Fixed set queries inside BEL operator.
- Features:
- 10 April 2020: Inter4QL 5.1 by Łukasz Bialek:
- Features:
- Computation of Bel-free queries on belief bases now uses sum of modules (issue fixed).
- Added planning heuristics: disable_failed_preconditions, random, composite_first and goal_probing.
- Added measurements of planning times.
- Set of debug modules has been extended.
- Bugfixes:
- Several bugfixes for the planning algorithm.
- Features:
- 15 December 2019: Inter4QL 5.0 by Łukasz Bialek:
- Features:
- Actions and planning.
- Debug mode.
- Added new interpreter commands.
- Features:
- 31 August 2019: Inter4QL 4.1 by Łukasz Bialek:
- Bugfixes:
- Fixed issue with comparison of Values causing wrong reasoning results in some corner cases.
- Fixed aggregation of Results causing single logic values to be returned wrongly.
- Bugfixes:
- 29 October 2018: Inter4QL 4.0 by Łukasz Bialek:
- Features:
- Concept of belief bases with Bel operator.
- Rigid and flexible constraints.
- Belief shadowing.
- Improvements:
- Type 'expression' simplified.
- Priorities to parser tokens added.
- General bugfixes and performance improvements.
- Features:
- 28 July 2016: Inter4QL 3.1: bugfixes by Łukasz Bialek.
- 18 May 2016: Inter4QL 3.0 bugfix by Aleksander Bulanowski.
- 30 March 2016: Inter4QL 3.0 by Aleksander Bulanowski:
- Features:
- Constructs of groups of modules and means for fusing knowledge from modules in groups are introduced (on the basis of belief structures).
- Arbitrary Boolean combinations of literals in queries allowed.
- Simplification of fragments of code.
- Performance improvements.
- Bugfixes:
- Corrections of evaluation of well supported models.
- Features:
- 22 December 2014: Inter4QL 2.5 by Łukasz Białek:
- Features:
- Domains correspond to one-argument relations.
- Features:
- 4 September 2014: Inter4QL 2.4 by Łukasz Makar:
- Features:
- Identifiers can include the '_' sign.
- Bugfixes:
- Corrected comparison relations for REAL and LOGIC.
- Corrected reasoning with the 'in' clause in the contexts like '-m.rel(X) in {...}'.
- other minor fixes.
- Features:
- 4 March 2014: Inter4QL 2.3 by Łukasz Białek:
- Features:
- Major optimization pack for 4QL interpreter:
- Improved data structures for fact storage - facts are stored in groups indexed with relation names.
- Unknown facts are stored separately and also in groups.
- Main fact-generation algorithm is refactored and optimized.
- Major optimization pack for 4QL interpreter:
- Features:
- 4 November 2013: Inter4QL 2.2 by Łukasz Białek:
- Features:
- Unknown facts are generated only for relations which are used in "unknown" set query (in {..., unknown, ...}).
- Bugfixes:
- Fixed bug causing Segmentaion Fault while using modules undefined in program file.
- Fixed set queries, that query internal and external modules.
- Fixed handling of negated set queries.
- Features:
- 26 September 2013: Inter4QL 2.1 by Łukasz Białek:
- Features:
- domains are kept separate also when they contain elements of the same type.
- Bugfixes:
- Clearing domains in error mode does not turn interpreter off.
- Variable space is reinitialized after 'clear' command.
- Features:
- 20 August 2013: Inter4ql 2.0 by Łukasz Białek.
- The source code of inter4ql v2.0 is strongly based on the first version of code. It is rather difficult to draw a strict border between versions 1.0 and 2.0. The following description is very shallow and for sure does not give full account about what was done in second version and what was done before. The best way to find out is to compare 1.0 and 2.0 zip packages.
- The directory structure is practically unchanged. The only difference is that directories "sqlite3" and "tinyxml" have been removed (with all files inside: sqlite and tinyxml are not used in current varsion). However, a new directory, "plugins", has been added. It contains only newly implemented files.
- In the main source code directory ("src/") most of files were originally created in version 1.0. Files "SQL_SQLite.cc", "SQL_SQLite.h" and "SQLWrapper.h" have been removed and replaced by new files "ReasoningModule.cc", ReasoningModule.h" and "ReasoningWrapper.h", fully implemented in version 2.0. The same applies to files: "Disposable.cc", "Disposable.h". All files from "/src/modules/" were deleted and replaced by new implementations of modules.
- Almost all other files have been modified. All destructors are newly implemented as well as almost all "delete" instructions. Some custom constructors and comparator functions (like "compare" in Result class) were added. Scanner.l and LineParser.y files (inputs for Flex and Bison) have memory management added. Moreover, 4QL grammar has changed a bit in LineParser.y (removal of "external" tokens) as well as token recognition in Scanner.l (negative integers and reals were introduced). "Module*.cc" files were modified to match new module implementations from "/src/modules/" (new way of asking for facts).
- The source code of inter4ql v2.0 is strongly based on the first version of code. It is rather difficult to draw a strict border between versions 1.0 and 2.0. The following description is very shallow and for sure does not give full account about what was done in second version and what was done before. The best way to find out is to compare 1.0 and 2.0 zip packages.
- 10 March 2012: Inter4ql 1.0 with a patch by Grzegorz Jaskiewicz (concerning SQL queries).
- 20 August 2011: Inter4ql 1.0 by Patryk Spanily.
- 21 April 2020: Inter4QL 5.2 by Łukasz Bialek: