The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed pypi publishing workflow.
- Added support for
clingo
'spypi
distribution, avoiding the need to install it manually. Some internal interfaces were changed, review these changes if your code is coupled to the ASP-based grounding components (#123).clingo
now is anextra
dependency of our package. Usepip install tarski[clingo]
to install tarski with it. The ASP-based grounding component will fall back to a "manually installed"clingo
in thePATH
if the Python package is not present.
- Temporal planning model:
- Added concept of post-condition (i.e.
at end
conditions)Action
class - Added concept of duration to
Action
class - Added concept of grounding constraints to
Action
class
- Added concept of post-condition (i.e.
- Naive grounding features:
- Added method to exhaustively ground terms with subterms that are constants. For instance, the term
foo(x, a)
wherex
is a variable anda
is a constant can be now grounded taking into account that the second argument offoo
is already fixed toa
.
- Added method to exhaustively ground terms with subterms that are constants. For instance, the term
- Error reporting and handling:
UndefinedTerm
: added name of term as an argument. This enables processing exception data, for instance, to initialise such terms to some value likeinfty
or force the failure to ground some structural element in a domain, such as an action.
- Experimental support for a SAS writer (work in progress).
- Experimental ply-based PDDL parser (work in progress):
- Current implementation using
ply
package, version 3.11. Eventually will be refactored forsly
. Plan is eventually to parse correctly and generate instance structural elements for PDDL 3.1. - Supported features:
- Instantaneous actions
- Durative actions
- Care has been taken so the parser allows the keyword
at
to be used as a predicate/function/type identifier
- Care has been taken so the parser allows the keyword
- Derived predicates
- Object fluents
- Metrics associated with IPC formulations of temporal planning
- Partial support:
- Conditional effects
- Quantified conditions in preconditions, conditional effects and derived predicates
- Arithmetic expressions and effects
- Current implementation using
- New formula visitor:
CollectEqualityAtoms
- What it says on the tin: collects equality atoms that appear as subformulas of a given formula
- New optional
pip
dependency:ply
FirstOrderLanguage.is_subtype
: it is now checked if there is a path connecting two types in the type hierarchy. If that is the case, this fact is recorded in the dictionaryindirect_ancestor_sorts
. Whenever a change is made in the type hierarchy (e.g. adding a new sort or changing the parent of a sort), the cache is invalidated.
- Fixed issue with
parse_atom
method and whitespace in the description of atoms (#121) - Fixed issue with printing of types in untyped domains (#113)
- Use real instead of integer numbers by default when parsing with strict_with_requirements=False (#114)
- Fixed issue with equality predicates trying to coerce the right hand side to a constant when the left hand side is a term
- Added some basic forward search capabilities (#101).
- Import psutil module conditionally, to offer better support for non-Linux platforms where it is not available (see discussion in #99).
- Removed support for
PySDD
andsdd
extra, which was largely unused, and hard to integrate into the CI testing.
- Model.set() is now deprecated
- Fixed a bug in
check_hypergraph_acyclicity
reported by @abcorrea.
- Switched license to the Apache Software Licence 2.0 (#92)
- Minor bugfixes and improvements.
- Better compliance with pylint warnings and errors.
- Fixed some silly releasing mistakes... through a new release :-)
- Improved documentation (still work in progress though).
- Added methods to simplify problems, actions, logical expressions based on evaluation of static atoms and terms.
- Added method to compile away negated literals in action preconditions, action effect conditions and goal, using the standard mechanism of creating additional predicates.
- Almost all benchmarks from the IPC competitions 2008, 2011, 2014, 2018 are now correctly parsed by Tarski.
The unit tests also make sure this keeps being true. The only domain that Tarski cannot parse
correctly is Tidybot, where "cart" is used both as type name and object name. This does not bode well with
the assumptions made in Tarski first-order languages. Problems from domains Floortile and GED need to be parsed
with caution as well, by using, respectively, the parser options
strict_with_requirements=False
andcase_insensitive=True
, since the first one uses action costs without declaring them in the "requirements" section, whereas the second one uses lowercase in the domain file, and uppercase in the instance file. - Improved support for representation and parsing of action costs.
- Added methods to check applicability of an action in a state (model) and to progress a state through an action.
- Added some methods to the
fstrips.representation
module to check and compute delete-free relaxations of problems. - Modularize Tarski dependencies so that the use and installation of numpy, scipy, etc. is optional.
- Generation of action schema CSPs.
- Almost-identical methods
approximate_symbol_fluency
andclassify_symbols
have been merged into one single methodapproximate_symbol_fluency
.
- Preliminary readthedocs documentation integrated in the repository. CI tests the documentation build as well.
- Integration with the PySDD package for sentential decision diagrams to process action schema preconditions.
- Implementation of a
project_away_effect_free_variables_from_problem
transformation that for each action schema compiles into existential variables all action parameters that are not used in the action effects (#63). - Implementation of a
compile_universal_effects_away
transformation that expands universal effects in actions. - Reachability module now processes problems with cost-related functions (010d79df)
- Preliminary implementation of a library of benchmark generators (#43).
- Added some preliminary support for the NDL representation language.
- Fixed some minor bugs in FSTRIPS writer.
- Fixed bug in ReachabilityLPCompiler when problem has an action and a predicate with the same name (7e9a684).
- Remove temporary files created by the LP based grounder.
- Model.list_all_extensions now returns empty extensions if necessary (ffbc96d1)
- Preliminary implementation of a
tarski.fstrips.representation
module with some representational queries and transformations. - Preliminary integration with mypy static typing analysis which is checked now in the CI tests.
- Add helper function
find_domain_filename
to infer domain filenames from instance filenames. - Add
collect_unique_nodes
method to collect all AST nodes of any FSTRIPS expression. - Add namespace accessor
lang.ns
to FOL objects to allow direct access to any language element.
- Fixed bug with fluent / static symbol classification #66.
- Fixed bug with multiple conditional effects in FSTRIPS / PDDL parser.
- Fix bug in printing of FSTRIPS instances #69.
- Some other minor bugfixes.
- Parsing and writing of Functional STRIPS and PDDL encodings of classical planning problems.
- Parsing and writing of RDDL encodings of Markov Decision Processes (MDPs) and hybrid planning problems.
- Answer Set Programming-based grounding and reachability analysis for classical planning problems.
- Description Logics module for classical planning problems.
- Support for Existentially and Universally Quantified effects in Functional STRIPS and PDDL domain descriptions.
- Syntax for elementary linear algebra operations with vectors and matrices.
- Support for the evaluation of expressions involving matrices, vectors and scalars.
- Expression simplification.
First public release.