diff --git a/README.md b/README.md index cbf54840..5fc138ac 100644 --- a/README.md +++ b/README.md @@ -20,12 +20,6 @@ Look at our [documentation page](https://clinguin.readthedocs.io/en/latest/) to Our **[examples folder](https://github.com/potassco/clinguin/tree/master/examples)** shows how to use the range of functionalities in different applications. - - - - - - ### Extensions ***Integration with different applications*** diff --git a/clinguin/parse_input.py b/clinguin/parse_input.py index aa9b0d1c..913a32bd 100644 --- a/clinguin/parse_input.py +++ b/clinguin/parse_input.py @@ -30,7 +30,7 @@ class ArgumentParser: default_backend_exec_string = "from .server.application.backends import *" default_frontend_exec_string = "from .client.presentation.frontends import *" - default_backend = "ClingoMultishotBackend" + default_backend = "ClingoBackend" default_frontend = "AngularFrontend" def __init__(self) -> None: diff --git a/clinguin/server/application/backends/__init__.py b/clinguin/server/application/backends/__init__.py index c979e114..24bcca3b 100644 --- a/clinguin/server/application/backends/__init__.py +++ b/clinguin/server/application/backends/__init__.py @@ -4,15 +4,12 @@ # pylint: disable=cyclic-import from clinguin.server.application.backends.clingo_backend import ClingoBackend -from clinguin.server.application.backends.clingo_multishot_backend import ( - ClingoMultishotBackend, -) from clinguin.server.application.backends.clingodl_backend import ClingoDLBackend from clinguin.server.application.backends.clingraph_backend import ClingraphBackend from clinguin.server.application.backends.explanation_backend import ExplanationBackend __all__ = [ - ClingoMultishotBackend.__name__, + ClingoBackend.__name__, ClingraphBackend.__name__, ExplanationBackend.__name__, ClingoBackend.__name__, diff --git a/clinguin/server/application/backends/clingo_backend.py b/clinguin/server/application/backends/clingo_backend.py index 76021608..d7a1d916 100644 --- a/clinguin/server/application/backends/clingo_backend.py +++ b/clinguin/server/application/backends/clingo_backend.py @@ -1,7 +1,7 @@ # pylint: disable=R0801 # pylint: disable=too-many-lines """ -Module that contains the ClingoMultishotBackend. +Module that contains the ClingoBackend. """ import functools import logging @@ -71,7 +71,7 @@ def register_options(cls, parser): @classmethod def register_options(cls, parser): - ClingoMultishotBackend.register_options(parser) + ClingoBackend.register_options(parser) parser.add_argument( "--my-custom-option", @@ -222,6 +222,8 @@ def _init_ds_constructors(self): self._add_domain_state_constructor("_ds_model") # Keep after brave and cautious self._add_domain_state_constructor("_ds_opt") self._add_domain_state_constructor("_ds_unsat") # Keep after all solve calls + self._add_domain_state_constructor("_ds_assume") + self._add_domain_state_constructor("_ds_external") def _init_command_line(self): """ @@ -450,6 +452,57 @@ def _add_atom(self, predicate_symbol): if predicate_symbol not in self._atoms: self._atoms.add(predicate_symbol) + def _set_external(self, symbol, name): + """ + Sets the external value of a symbol. + + Args: + symbol (clingo.Symbol): The clingo symbol to be set + name (str): Either "true", "false" or "release" + """ + if name == "release": + self._logger.debug(domctl_log(f"ctl.release_external({symbol})")) + self._ctl.release_external(symbol) + self._externals["released"].add(symbol) + + if symbol in self._externals["true"]: + self._externals["true"].remove(symbol) + + if symbol in self._externals["false"]: + self._externals["false"].remove(symbol) + + elif name == "true": + self._logger.debug(domctl_log(f"ctl.assign_external({symbol}, True)")) + self._ctl.assign_external(symbol, True) + self._externals["true"].add(symbol) + + if symbol in self._externals["false"]: + self._externals["false"].remove(symbol) + + elif name == "false": + self._logger.debug(domctl_log(f"ctl.assign_external({symbol}, False)")) + self._ctl.assign_external(symbol, False) + self._externals["false"].add(symbol) + + if symbol in self._externals["true"]: + self._externals["true"].remove(symbol) + + else: + raise ValueError( + f"Invalid external value {name}. Must be true, false or relase" + ) + + def _add_assumption(self, symbol, value: str = "true"): + """ + Adds an assumption to the list of assumptions. + + Args: + symbol (clingo.Symbol): The clingo symbol to be added as a True assumption + value (true): The value of the assumption either "true" or "false" (Defaults to true) + """ + bool_val = value == "true" + self._assumptions.add((symbol, bool_val)) + # --------------------------------------------- # Solving # --------------------------------------------- @@ -750,6 +803,35 @@ def _ds_browsing(self): prg += "_clinguin_browsing." return prg + "\n" + @property + def _ds_assume(self): + """ + Adds information about the assumptions + + Includes predicate ``_clinguin_assume/2`` for every atom that was assumed. + """ + prg = "#defined _clinguin_assume/2. " + for a, v in self._assumption_list: + v_str = "true" if v else "false" + prg += f"_clinguin_assume({str(a)},{v_str}). " + return prg + "\n" + + @property + def _ds_external(self): + """ + Adds information about the external atoms + + Includes predicate ``_clinguin_external/2`` for every external atom that has been set. + """ + prg = "#defined _clinguin_external/2. " + for a in self._externals["true"]: + prg += f"_clinguin_external({str(a)},true). " + for a in self._externals["false"]: + prg += f"_clinguin_external({str(a)},false). " + for a in self._externals["released"]: + prg += f"_clinguin_external({str(a)},release). " + return prg + "\n" + @property def _ds_opt(self): """ @@ -972,18 +1054,137 @@ def next_solution(self, opt_mode="ignore"): self._outdate() self._messages.append(("Browsing Information", "No more solutions", "info")) - def select(self): + def clear_assumptions(self): """ - Select the current solution during browsing. - All atoms in the solution are added as atoms in the backend. + Removes all assumptions. + """ + # pylint: disable=attribute-defined-outside-init + self._outdate() + self._assumptions = set() + + def add_assumption(self, atom, value: str = "true"): + """ + Adds an atom `a` as an assumption. + If the value is True (which is the default), the atom is assumed to be true. + This assumption can be considered as an integrity constraint: + `:- not a.` forcing the program to entail the given atom. + If the value is False, the atom is assumed to be false: + This assumption can be considered as an integrity constraint: + `:- a.` forcing the program to never entail the given atom. + + Arguments: + + atom (str): The clingo symbol to be added as a true assumption + value (str): The value of the assumption either "true" or "false" (Defaults to true) + """ + atom_symbol = parse_term(atom) + if atom_symbol not in [a[0] for a in self._assumptions]: + self._add_assumption(atom_symbol, value) + self._outdate() + + def remove_assumption(self, atom): + """ + Removes an atom from the assumptions list regardless of its value. + + Arguments: + atom (str): The clingo symbol to be removed + """ + atom_symbol = parse_term(atom) + for a, v in self._assumptions: + if a == atom_symbol: + self._assumptions.remove((a, v)) + self._outdate() + return + + def remove_assumption_signature(self, atom): + """ + Removes from the list of assumptions those matching the given atom. + Unlike function remove_assumption, this one allows for partial matches using the + placeholder constant `any` + + Arguments: + + atom (str): The atom description as a symbol, + where the reserver word `any` is used to state that anything can + take part of that position. For instance, `person(anna,any)`, + will remove all assumptions of atom person, where the first argument is anna. + """ + atom_symbol = parse_term(atom) + arity = len(atom_symbol.arguments) + to_remove = [] + for s, v in self._assumptions: + if s.match(atom_symbol.name, arity): + for i, a in enumerate(atom_symbol.arguments): + if str(a) != "any" and s.arguments[i] != a: + break + else: + to_remove.append((s, v)) + continue + for a in to_remove: + self._assumptions.remove(a) + if len(to_remove) > 0: + self._outdate() + + def set_external(self, atom, value): """ + Sets the value of an external. Externals must be defined in the domain files using `#external`. + The truth value of external atoms can then be provided by the user via this function. + + Arguments: + + atom (str): The clingo symbol to be set + value (str): The value (release, true or false) + """ + symbol = parse_term(atom) + name = value self._outdate() + + self._set_external(symbol, name) + + def select(self, show_prg: str = ""): + """ + Select the current solution during browsing. + All atoms in the solution are added as assumptions in the backend. + + Arguments: + + show_program (str): An optional show program to filter atoms + + """ if self._model is None: self._messages.append( - "No solution", "There is no solution to be selected", "danger" + ("No solution", "There is no solution to be selected", "danger") ) - for s in self._model: # pylint: disable=E1133 - self._add_atom(s) + self._logger.error( + "No solution. No model has been computed that can be selected" + ) + else: + symbols_to_ignore = self._externals["true"] + symbols_to_ignore.union(self._externals["false"]) + if show_prg == "": + model = self._model + else: + model = [] + ctl = Control(["--warn=none"]) + try: + ctl.add("base", [], show_prg.strip('"')) + except RuntimeError as exc: + raise Exception( + "Show program can't be parsed. Make sure it is a valid clingo program." + ) from exc + prg = "\n".join([f"{str(s)}." for s in self._model]) + ctl.add("base", [], prg) + ctl.ground([("base", [])]) + + def add_shown(m): + for s in m.symbols(shown=True): + model.append(s) + + ctl.solve(on_model=add_shown) + for s in model: # pylint: disable=E1133 + if s not in symbols_to_ignore: + self._add_assumption(s) + self._outdate() def stop_browsing(self): """ diff --git a/clinguin/server/application/backends/clingo_multishot_backend.py b/clinguin/server/application/backends/clingo_multishot_backend.py deleted file mode 100644 index 0c2b8a94..00000000 --- a/clinguin/server/application/backends/clingo_multishot_backend.py +++ /dev/null @@ -1,258 +0,0 @@ -# pylint: disable=R0801 -""" -Module that contains the ClingoMultishotBackend. -""" - -from clingo import Control, parse_term -from clingo.script import enable_python - -from clinguin.server.application.backends import ClingoBackend -from clinguin.utils.annotations import extends, overwrites - -from ....utils.logger import domctl_log - -enable_python() - - -class ClingoMultishotBackend(ClingoBackend): - """ - Extends the basic clingo functionality for grounding and solving with the use of assumptions and externals. - - It is selected as the default Backend - """ - - # --------------------------------------------- - # Initialization - # --------------------------------------------- - @extends(ClingoBackend) - def _init_ds_constructors(self): - super()._init_ds_constructors() - self._add_domain_state_constructor("_ds_assume") - self._add_domain_state_constructor("_ds_external") - - # --------------------------------------------- - # Setters - # --------------------------------------------- - - def _set_external(self, symbol, name): - """ - Sets the external value of a symbol. - - Args: - symbol (clingo.Symbol): The clingo symbol to be set - name (str): Either "true", "false" or "release" - """ - if name == "release": - self._logger.debug(domctl_log(f"ctl.release_external({symbol})")) - self._ctl.release_external(symbol) - self._externals["released"].add(symbol) - - if symbol in self._externals["true"]: - self._externals["true"].remove(symbol) - - if symbol in self._externals["false"]: - self._externals["false"].remove(symbol) - - elif name == "true": - self._logger.debug(domctl_log(f"ctl.assign_external({symbol}, True)")) - self._ctl.assign_external(symbol, True) - self._externals["true"].add(symbol) - - if symbol in self._externals["false"]: - self._externals["false"].remove(symbol) - - elif name == "false": - self._logger.debug(domctl_log(f"ctl.assign_external({symbol}, False)")) - self._ctl.assign_external(symbol, False) - self._externals["false"].add(symbol) - - if symbol in self._externals["true"]: - self._externals["true"].remove(symbol) - - else: - raise ValueError( - f"Invalid external value {name}. Must be true, false or relase" - ) - - def _add_assumption(self, symbol, value: str = "true"): - """ - Adds an assumption to the list of assumptions. - - Args: - symbol (clingo.Symbol): The clingo symbol to be added as a True assumption - value (true): The value of the assumption either "true" or "false" (Defaults to true) - """ - bool_val = value == "true" - self._assumptions.add((symbol, bool_val)) - - # --------------------------------------------- - # Domain state - # --------------------------------------------- - - @property - def _ds_assume(self): - """ - Adds information about the assumptions - - Includes predicate ``_clinguin_assume/2`` for every atom that was assumed. - """ - prg = "#defined _clinguin_assume/2. " - for a, v in self._assumption_list: - v_str = "true" if v else "false" - prg += f"_clinguin_assume({str(a)},{v_str}). " - return prg + "\n" - - @property - def _ds_external(self): - """ - Adds information about the external atoms - - Includes predicate ``_clinguin_external/2`` for every external atom that has been set. - """ - prg = "#defined _clinguin_external/2. " - for a in self._externals["true"]: - prg += f"_clinguin_external({str(a)},true). " - for a in self._externals["false"]: - prg += f"_clinguin_external({str(a)},false). " - for a in self._externals["released"]: - prg += f"_clinguin_external({str(a)},release). " - return prg + "\n" - - ######################################################################################################## - - # --------------------------------------------- - # Public operations - # --------------------------------------------- - - def clear_assumptions(self): - """ - Removes all assumptions. - """ - # pylint: disable=attribute-defined-outside-init - self._outdate() - self._assumptions = set() - - def add_assumption(self, atom, value: str = "true"): - """ - Adds an atom `a` as an assumption. - If the value is True (which is the default), the atom is assumed to be true. - This assumption can be considered as an integrity constraint: - `:- not a.` forcing the program to entail the given atom. - If the value is False, the atom is assumed to be false: - This assumption can be considered as an integrity constraint: - `:- a.` forcing the program to never entail the given atom. - - Arguments: - - atom (str): The clingo symbol to be added as a true assumption - value (str): The value of the assumption either "true" or "false" (Defaults to true) - """ - atom_symbol = parse_term(atom) - if atom_symbol not in [a[0] for a in self._assumptions]: - self._add_assumption(atom_symbol, value) - self._outdate() - - def remove_assumption(self, atom): - """ - Removes an atom from the assumptions list regardless of its value. - - Arguments: - atom (str): The clingo symbol to be removed - """ - atom_symbol = parse_term(atom) - for a, v in self._assumptions: - if a == atom_symbol: - self._assumptions.remove((a, v)) - self._outdate() - return - - def remove_assumption_signature(self, atom): - """ - Removes from the list of assumptions those matching the given atom. - Unlike function remove_assumption, this one allows for partial matches using the - placeholder constant `any` - - Arguments: - - atom (str): The atom description as a symbol, - where the reserver word `any` is used to state that anything can - take part of that position. For instance, `person(anna,any)`, - will remove all assumptions of atom person, where the first argument is anna. - """ - atom_symbol = parse_term(atom) - arity = len(atom_symbol.arguments) - to_remove = [] - for s, v in self._assumptions: - if s.match(atom_symbol.name, arity): - for i, a in enumerate(atom_symbol.arguments): - if str(a) != "any" and s.arguments[i] != a: - break - else: - to_remove.append((s, v)) - continue - for a in to_remove: - self._assumptions.remove(a) - if len(to_remove) > 0: - self._outdate() - - def set_external(self, atom, value): - """ - Sets the value of an external. Externals must be defined in the domain files using `#external`. - The truth value of external atoms can then be provided by the user via this function. - - Arguments: - - atom (str): The clingo symbol to be set - value (str): The value (release, true or false) - """ - symbol = parse_term(atom) - name = value - self._outdate() - - self._set_external(symbol, name) - - @overwrites(ClingoBackend) - def select(self, show_prg: str = ""): - """ - Select the current solution during browsing. - All atoms in the solution are added as assumptions in the backend. - - Arguments: - - show_program (str): An optional show program to filter atoms - - """ - if self._model is None: - self._messages.append( - ("No solution", "There is no solution to be selected", "danger") - ) - self._logger.error( - "No solution. No model has been computed that can be selected" - ) - else: - symbols_to_ignore = self._externals["true"] - symbols_to_ignore.union(self._externals["false"]) - if show_prg == "": - model = self._model - else: - model = [] - ctl = Control(["--warn=none"]) - try: - ctl.add("base", [], show_prg.strip('"')) - except RuntimeError as exc: - raise Exception( - "Show program can't be parsed. Make sure it is a valid clingo program." - ) from exc - prg = "\n".join([f"{str(s)}." for s in self._model]) - ctl.add("base", [], prg) - ctl.ground([("base", [])]) - - def add_shown(m): - for s in m.symbols(shown=True): - model.append(s) - - ctl.solve(on_model=add_shown) - for s in model: # pylint: disable=E1133 - if s not in symbols_to_ignore: - self._add_assumption(s) - self._outdate() diff --git a/clinguin/server/application/backends/clingodl_backend.py b/clinguin/server/application/backends/clingodl_backend.py index 50ddc6c9..40dcd332 100644 --- a/clinguin/server/application/backends/clingodl_backend.py +++ b/clinguin/server/application/backends/clingodl_backend.py @@ -8,8 +8,8 @@ from clingo.script import enable_python from clingodl import ClingoDLTheory -from clinguin.server.application.backends.clingo_multishot_backend import ( - ClingoMultishotBackend, +from clinguin.server.application.backends.clingo_backend import ( + ClingoBackend, ) from clinguin.utils.annotations import extends @@ -17,7 +17,7 @@ # pylint: disable=attribute-defined-outside-init -class ClingoDLBackend(ClingoMultishotBackend): +class ClingoDLBackend(ClingoBackend): """ Backend that allows programs using clingodl theory atoms as input. It also includes the assignment in the domain state. @@ -27,7 +27,7 @@ class ClingoDLBackend(ClingoMultishotBackend): # Setups # --------------------------------------------- - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _init_command_line(self): """ Sets the dl configuration @@ -38,7 +38,7 @@ def _init_command_line(self): ) self._dl_conf = [(a[0], a[1]) for a in dl_config] - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _init_interactive(self): """ Initializes the list of the assignments @@ -49,12 +49,12 @@ def _init_interactive(self): super()._init_interactive() self._assignment = [] - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _init_ds_constructors(self): super()._init_ds_constructors() self._add_domain_state_constructor("_ds_assign") - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _create_ctl(self): """ Registers the ClingoDLTheory. @@ -65,7 +65,7 @@ def _create_ctl(self): self._theory.configure(k, v) self._theory.register(self._ctl) - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _load_file(self, f): """ Uses the program builder to rewrite the theory atoms. @@ -73,7 +73,7 @@ def _load_file(self, f): with ProgramBuilder(self._ctl) as bld: parse_files([f], lambda ast: self._theory.rewrite_ast(ast, bld.add)) - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _outdate(self): """ Sets the assignment to empty. @@ -84,7 +84,7 @@ def _outdate(self): # --------------------------------------------- # Solving # --------------------------------------------- - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _prepare(self): """ Prepares the theory before solving @@ -92,7 +92,7 @@ def _prepare(self): # pylint: disable=attribute-defined-outside-init self._theory.prepare(self._ctl) - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _on_model(self, model): """ Sets the assignment from the model @@ -109,12 +109,12 @@ def _on_model(self, model): # --------------------------------------------- @classmethod - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def register_options(cls, parser): """ Adds the `dl-config` option. """ - ClingoMultishotBackend.register_options(parser) + ClingoBackend.register_options(parser) parser.add_argument( "--dl-config", diff --git a/clinguin/server/application/backends/clingraph_backend.py b/clinguin/server/application/backends/clingraph_backend.py index 517cb1ab..49822823 100644 --- a/clinguin/server/application/backends/clingraph_backend.py +++ b/clinguin/server/application/backends/clingraph_backend.py @@ -12,8 +12,8 @@ from clingraph.clingo_utils import ClingraphContext from clorm import Raw -from clinguin.server.application.backends.clingo_multishot_backend import ( - ClingoMultishotBackend, +from clinguin.server.application.backends.clingo_backend import ( + ClingoBackend, ) from clinguin.server.data.attribute import AttributeDao @@ -24,14 +24,14 @@ from ....utils.transformer import UsesSignatureTransformer -class ClingraphBackend(ClingoMultishotBackend): +class ClingraphBackend(ClingoBackend): """ - Extends ClingoMultishotBackend. With this Backend it is possible to include clingraph images in the UI. + Extends ClingoBackend. With this Backend it is possible to include clingraph images in the UI. The image is rendered based on a visualization encoding every time the UI is updated. Then, they are sent the client as Base64 encoding. """ - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _init_command_line(self): """ Sets the arguments for computing clingraph images. @@ -60,7 +60,7 @@ def register_options(cls, parser): """ Registers command line options for ClingraphBackend. """ - ClingoMultishotBackend.register_options(parser) + ClingoBackend.register_options(parser) parser.add_argument( "--clingraph-files", @@ -202,7 +202,7 @@ def register_options(cls, parser): ) @functools.lru_cache(maxsize=None) # pylint: disable=[method-cache-max-size-none] - @overwrites(ClingoMultishotBackend) + @overwrites(ClingoBackend) def _ui_uses_predicate(self, name: str, arity: int): """ Returns a truth value of weather the ui_files contain the given signature. @@ -220,7 +220,7 @@ def _ui_uses_predicate(self, name: str, arity: int): # UI update # --------------------------------------------- - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _update_ui_state(self): """ Updates the UI state by calling all domain state methods diff --git a/clinguin/server/application/backends/explanation_backend.py b/clinguin/server/application/backends/explanation_backend.py index 9e05e45c..432a75cb 100644 --- a/clinguin/server/application/backends/explanation_backend.py +++ b/clinguin/server/application/backends/explanation_backend.py @@ -9,8 +9,8 @@ from clingexplaid.transformers import AssumptionTransformer from clingo.script import enable_python -from clinguin.server.application.backends.clingo_multishot_backend import ( - ClingoMultishotBackend, +from clinguin.server.application.backends.clingo_backend import ( + ClingoBackend, ) from clinguin.utils.annotations import extends @@ -19,9 +19,9 @@ enable_python() -class ExplanationBackend(ClingoMultishotBackend): +class ExplanationBackend(ClingoBackend): """ - Extends ClingoMultishotBackend. This backend will treat an UNSAT result by adding the + Extends ClingoBackend. This backend will treat an UNSAT result by adding the Minimal Unsatisfiable Core (MUC) to the domain-state, thus allowing the UI to show the faulty assumptions. """ @@ -46,7 +46,7 @@ def _assumption_list(self): # Initialization # --------------------------------------------- - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _init_interactive(self): """ Adds the MUS property @@ -58,7 +58,7 @@ def _init_interactive(self): # pylint: disable= attribute-defined-outside-init self._mus = None - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _init_command_line(self): """ Sets the assumption signature and the transformer used for the input files @@ -81,12 +81,12 @@ def _init_command_line(self): signatures=self._assumption_sig ) - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _init_ds_constructors(self): super()._init_ds_constructors() self._add_domain_state_constructor("_ds_mus") - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _load_file(self, f): """ Loads a file into the control. Transforms the program to add choices around assumption signatures. @@ -103,7 +103,7 @@ def _load_file(self, f): # --------------------------------------------- # Solving # --------------------------------------------- - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def _ground(self, program="base", arguments=None): """ Sets the list of assumptions that were taken from the input files using the assumption_signature. @@ -124,12 +124,12 @@ def _ground(self, program="base", arguments=None): # --------------------------------------------- @classmethod - @extends(ClingoMultishotBackend) + @extends(ClingoBackend) def register_options(cls, parser): """ Registers command line options for ClingraphBackend. """ - ClingoMultishotBackend.register_options(parser) + ClingoBackend.register_options(parser) parser.add_argument( "--assumption-signature", diff --git a/clinguin/server/presentation/endpoints_helper.py b/clinguin/server/presentation/endpoints_helper.py index 54c0cba4..e3e79a31 100644 --- a/clinguin/server/presentation/endpoints_helper.py +++ b/clinguin/server/presentation/endpoints_helper.py @@ -10,7 +10,7 @@ class EndpointsHelper: """ The EndpointsHelper class is responsible for getting the correct method in the ''backend'' - (here backend refers to ClingoMultishotBackend, TemporalBackend, etc.). This is done via reflections, + (here backend refers to ClingoBackend, TemporalBackend, etc.). This is done via reflections, i.e. it checks if the method is in the backend, if yes the method it returned. """ diff --git a/clinguin/utils/custom_args.py b/clinguin/utils/custom_args.py index 7643de92..5a50eb2b 100644 --- a/clinguin/utils/custom_args.py +++ b/clinguin/utils/custom_args.py @@ -6,7 +6,7 @@ class CustomArgs: """ - The root class of all backend- (like ClingoMultishotBackend) and gui-classes (like TkinterFrontend). + The root class of all backend- (like ClingoBackend) and gui-classes (like TkinterFrontend). Needed for argparse (with the method register_options one can specify command line arguments, that are specific to a certain class). diff --git a/clinguin_download.lp b/clinguin_download.lp deleted file mode 100644 index 2e9e4a9a..00000000 --- a/clinguin_download.lp +++ /dev/null @@ -1,18 +0,0 @@ -person("Max"). -person("Phil"). -person("Anna"). -include("Max"). -include("Phil"). -include("Anna"). -seat(1,1). -seat(2,1). -seat(1,2). -seat(1,3). -seat(2,3). -seat(3,3). -assign(seat(1,3),"Max"). -assign(seat(2,1),"Phil"). -assign(seat(1,2),"Anna"). -table(1,"Table 1"). -table(2,"Table 2"). -table(3,"Table 3"). \ No newline at end of file diff --git a/docs/clinguin/backends/ClingoBackend.rst b/docs/clinguin/backends/ClingoBackend.rst index 4243202d..14761fc6 100644 --- a/docs/clinguin/backends/ClingoBackend.rst +++ b/docs/clinguin/backends/ClingoBackend.rst @@ -1,12 +1,15 @@ ClingoBackend --------------- -Implements all basic clingo functionality for single-shot solving. +Implements all basic `clingo's API `_ functionality. +This includes grounding, solving, cautious and brave resoning, use of extenrals and assuptions, and optimization .. admonition:: Examples - :class: example - * `sudoku_single_shot `_ + * `sudoku `_ + * `jobshop `_ + * `placement `_ + .. currentmodule:: clinguin.server.application.backends @@ -38,6 +41,10 @@ Domain state constructors .. autoproperty:: ClingoBackend._ds_cautious_optimal +.. autoproperty:: ClingoBackend._ds_assume + +.. autoproperty:: ClingoBackend._ds_external + .. autoproperty:: ClingoBackend._ds_opt .. autoproperty:: ClingoBackend._ds_unsat diff --git a/docs/clinguin/backends/ClingoDLBackend.rst b/docs/clinguin/backends/ClingoDLBackend.rst index 0ffebdbe..fff471ce 100644 --- a/docs/clinguin/backends/ClingoDLBackend.rst +++ b/docs/clinguin/backends/ClingoDLBackend.rst @@ -1,7 +1,7 @@ ClingoDLBackend --------------- -Extends :ref:`ClingoMultishotBackend` with functionality to accept clingo-dl programs as input. +Extends :ref:`ClingoBackend` with functionality to accept clingo-dl programs as input. .. admonition:: Examples @@ -34,7 +34,7 @@ Public operations +++++++++++++++++ Can be used as `OPERATION` in the actions of the :ref:`ui-state` -Also includes all public operations from the :ref:`ClingoMultishotBackend`. +Also includes all public operations from the :ref:`ClingoBackend`. .. autoclass:: ClingoDLBackend :members: @@ -47,6 +47,6 @@ Domain state constructors .. important:: - The domain state also inclues domain constructors from the :ref:`ClingoMultishotBackend` + The domain state also inclues domain constructors from the :ref:`ClingoBackend` .. autoproperty:: ClingoDLBackend._ds_assign diff --git a/docs/clinguin/backends/ClingoMultishotBackend.rst b/docs/clinguin/backends/ClingoMultishotBackend.rst deleted file mode 100644 index 050e7ebf..00000000 --- a/docs/clinguin/backends/ClingoMultishotBackend.rst +++ /dev/null @@ -1,36 +0,0 @@ - -ClingoMultishotBackend ----------------------- - -Extends :ref:`ClingoBackend` with functionality for multi-shot solving. Adds options to access and store assumptions and externals. - -.. admonition:: Examples - - - * `sudoku `_ - * `jobshop `_ - * `placement `_ - * `placement_optimized `_ - -.. currentmodule:: clinguin.server.application.backends - -Public operations -+++++++++++++++++ - -Can be used as `OPERATION` in the actions of the :ref:`ui-state` -Also includes all public operations from the :ref:`ClingoBackend`. - -.. autoclass:: ClingoMultishotBackend - :members: - :noindex: - :exclude-members: register_options - - -Domain state constructors -+++++++++++++++++++++++++ - -.. important:: - - The domain state also inclues domain constructors from the :ref:`ClingoBackend` - -.. autoproperty:: ClingoMultishotBackend._ds_assume \ No newline at end of file diff --git a/docs/clinguin/backends/ClingraphBackend.rst b/docs/clinguin/backends/ClingraphBackend.rst index ef066d86..cc772f6b 100644 --- a/docs/clinguin/backends/ClingraphBackend.rst +++ b/docs/clinguin/backends/ClingraphBackend.rst @@ -2,7 +2,7 @@ ClingraphBackend ---------------- -Extends :ref:`ClingoMultishotBackend` with functionality to render and interact with `clingraph `_ images. +Extends :ref:`ClingoBackend` with functionality to render and interact with `clingraph `_ images. .. warning:: @@ -90,7 +90,7 @@ Public operations +++++++++++++++++ Can be used as `OPERATION` in the actions of the :ref:`ui-state` -Also includes all public operations from the :ref:`ClingoMultishotBackend`. +Also includes all public operations from the :ref:`ClingoBackend`. .. autoclass:: ClingraphBackend :members: @@ -103,6 +103,6 @@ Domain state constructors .. important:: - The domain state also inclues domain constructors from the :ref:`ClingoMultishotBackend` + The domain state also inclues domain constructors from the :ref:`ClingoBackend` diff --git a/docs/clinguin/backends/ExplanationBackend.rst b/docs/clinguin/backends/ExplanationBackend.rst index 4a50b8a0..548cc063 100644 --- a/docs/clinguin/backends/ExplanationBackend.rst +++ b/docs/clinguin/backends/ExplanationBackend.rst @@ -1,7 +1,7 @@ ExplanationBackend ------------------ -Extends :ref:`ClingoMultishotBackend` with functionality to compute Minumal Unsatisfiable Sets (MUS) when there is an UNSAT output. +Extends :ref:`ClingoBackend` with functionality to compute Minumal Unsatisfiable Sets (MUS) when there is an UNSAT output. .. admonition:: Examples @@ -57,7 +57,7 @@ Public operations +++++++++++++++++ Can be used as `OPERATION` in the actions of the :ref:`ui-state`. -Also includes all public operations from the :ref:`ClingoMultishotBackend`. +Also includes all public operations from the :ref:`ClingoBackend`. .. autoclass:: ExplanationBackend :members: @@ -70,7 +70,7 @@ Domain state constructors .. important:: - The domain state also inclues domain constructors from the :ref:`ClingoMultishotBackend` + The domain state also inclues domain constructors from the :ref:`ClingoBackend` .. autoproperty:: ExplanationBackend._ds_mus diff --git a/docs/clinguin/backends/index.rst b/docs/clinguin/backends/index.rst index 279546c6..adf46d23 100644 --- a/docs/clinguin/backends/index.rst +++ b/docs/clinguin/backends/index.rst @@ -19,7 +19,6 @@ Built-in Backends :maxdepth: 1 ClingoBackend.rst - ClingoMultishotBackend.rst ClingraphBackend.rst ExplanationBackend.rst ClingoDLBackend.rst diff --git a/docs/clinguin/development/customBackend.rst b/docs/clinguin/development/customBackend.rst index fd5e6b7d..c140578f 100644 --- a/docs/clinguin/development/customBackend.rst +++ b/docs/clinguin/development/customBackend.rst @@ -4,14 +4,10 @@ Creating your own backend ------------------------- By creating your own backend you can extend functionality and edit the existing server workflow. -If you are using *clingo*, we highly recomend extending the :ref:`ClingoMultishotBackend` to create your own. +If you are using *clingo*, we highly recomend extending the :ref:`ClingoBackend` to create your own. This backend contains multiple functionalities already built in wich can be overwritten and extended. The following explanation assumes that this is the backend that is being extended. -.. note:: - - If you will not use multi-shot functionalities, assumptions and exterals - you can also extend the :ref:`ClingoBackend`. Code structure ============== @@ -26,13 +22,13 @@ Your code strucure with your custom backend must be the following: └── encoding.lp └── instance.lp -- ``my_backend.py``: Contains the backend class that extends the :ref:`ClingoMultishotBackend`. +- ``my_backend.py``: Contains the backend class that extends the :ref:`ClingoBackend`. .. code-block:: python - from clinguin.server.application.backends import ClingoMultishotBackend + from clinguin.server.application.backends import ClingoBackend - class MyBackend(ClingoMultishotBackend): + class MyBackend(ClingoBackend): ... - ``ui.lp``: Contains the UI encoding. @@ -69,7 +65,7 @@ In what follows we divide the possible extensions for explanability. For more im .. autoclass:: ClingoBackend :exclude-members: __init__, __new__ -.. autoclass:: ClingoMultishotBackend +.. autoclass:: ClingoBackend :exclude-members: __init__, __new__ :show-inheritance: @@ -108,7 +104,7 @@ These operations are any public method of the class and will be accessible to th .. code-block:: - class MyBackend(ClingoMultishotBackend): + class MyBackend(ClingoBackend): ... def my_operation(self, arg1, arg2)->None: @@ -193,9 +189,9 @@ These methods will set different attributes of the backend. .. automethod:: ClingoBackend._add_atom -.. automethod:: ClingoMultishotBackend._set_external +.. automethod:: ClingoBackend._set_external -.. automethod:: ClingoMultishotBackend._add_assumption +.. automethod:: ClingoBackend._add_assumption @@ -254,7 +250,7 @@ But, they need to be previously registered in the constructor using the function .. note:: - Domain state constructors for this backend are showed in the :ref:`ClingoMultishotBackend` and :ref:`ClingoBackend` sections. + Domain state constructors for this backend are showed in the :ref:`ClingoBackend` and :ref:`ClingoBackend` sections. These constructors can also be overwritten if necessary. @@ -270,7 +266,7 @@ can be made by overwritting this method. * `clingraph_backend `_ -.. automethod:: ClingoMultishotBackend._update_ui_state +.. automethod:: ClingoBackend._update_ui_state .. currentmodule:: clinguin.server.data.ui_state diff --git a/docs/clinguin/examples/catdog.md b/docs/clinguin/examples/catdog.md new file mode 120000 index 00000000..43b71668 --- /dev/null +++ b/docs/clinguin/examples/catdog.md @@ -0,0 +1 @@ +../../../examples/angular/catdog/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/elevator.md b/docs/clinguin/examples/elevator.md new file mode 120000 index 00000000..3d4a8e18 --- /dev/null +++ b/docs/clinguin/examples/elevator.md @@ -0,0 +1 @@ +../../../examples/angular/elevator/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/graph_coloring.md b/docs/clinguin/examples/graph_coloring.md new file mode 120000 index 00000000..ed420832 --- /dev/null +++ b/docs/clinguin/examples/graph_coloring.md @@ -0,0 +1 @@ +../../../examples/angular/graph_coloring/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/index.rst b/docs/clinguin/examples/index.rst new file mode 100644 index 00000000..6ca108b2 --- /dev/null +++ b/docs/clinguin/examples/index.rst @@ -0,0 +1,27 @@ +.. _examples: + +|:bulb:| Examples +================= + +.. important:: + + If you wish to run the examples yourself, you can find them in the `clinguin repository `_. + +.. warning:: + + Make sure you run the command line while you stand in the ``examples/angular`` directory. + +.. toctree:: + :maxdepth: 1 + + sudoku + catdog + elevator + knapsack + placement + study_regulations + graph_coloring + tree_browser + sudoku_basic + sudoku_advanced + jobshop \ No newline at end of file diff --git a/docs/clinguin/examples/jobshop.md b/docs/clinguin/examples/jobshop.md new file mode 120000 index 00000000..b20e1187 --- /dev/null +++ b/docs/clinguin/examples/jobshop.md @@ -0,0 +1 @@ +../../../examples/angular/jobshop/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/knapsack.md b/docs/clinguin/examples/knapsack.md new file mode 120000 index 00000000..c434f616 --- /dev/null +++ b/docs/clinguin/examples/knapsack.md @@ -0,0 +1 @@ +../../../examples/angular/knapsack/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/placement.md b/docs/clinguin/examples/placement.md new file mode 120000 index 00000000..4b0dbf56 --- /dev/null +++ b/docs/clinguin/examples/placement.md @@ -0,0 +1 @@ +../../../examples/angular/placement/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/study_regulations.md b/docs/clinguin/examples/study_regulations.md new file mode 120000 index 00000000..832f906e --- /dev/null +++ b/docs/clinguin/examples/study_regulations.md @@ -0,0 +1 @@ +../../../examples/angular/study_regulations/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/sudoku.md b/docs/clinguin/examples/sudoku.md new file mode 120000 index 00000000..5cc31624 --- /dev/null +++ b/docs/clinguin/examples/sudoku.md @@ -0,0 +1 @@ +../../../examples/angular/sudoku/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/sudoku_advanced.md b/docs/clinguin/examples/sudoku_advanced.md new file mode 120000 index 00000000..f1ce419d --- /dev/null +++ b/docs/clinguin/examples/sudoku_advanced.md @@ -0,0 +1 @@ +../../../examples/angular/sudoku_advanced/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/sudoku_basic.md b/docs/clinguin/examples/sudoku_basic.md new file mode 120000 index 00000000..a952cf84 --- /dev/null +++ b/docs/clinguin/examples/sudoku_basic.md @@ -0,0 +1 @@ +../../../examples/angular/sudoku_basic/README.md \ No newline at end of file diff --git a/docs/clinguin/examples/tree_browser.md b/docs/clinguin/examples/tree_browser.md new file mode 120000 index 00000000..746b9359 --- /dev/null +++ b/docs/clinguin/examples/tree_browser.md @@ -0,0 +1 @@ +../../../examples/angular/tree_browser/README.md \ No newline at end of file diff --git a/docs/clinguin/examples_readme.md b/docs/clinguin/examples_readme.md deleted file mode 120000 index 6fa53604..00000000 --- a/docs/clinguin/examples_readme.md +++ /dev/null @@ -1 +0,0 @@ -../../examples/README.md \ No newline at end of file diff --git a/docs/clinguin/help.rst b/docs/clinguin/help.rst index 6237f914..c7d8616c 100644 --- a/docs/clinguin/help.rst +++ b/docs/clinguin/help.rst @@ -25,6 +25,30 @@ then you have to add ``#project a.`` to your :ref:`domain-files` to get the desired output. Furthermore any show statements that output a tuple (function without name) will lead to syntactic issues so thet should be removed. +.. admonition:: **Exception: Could not parse ...** + :class: tip + + If you get an exception ``Exception: Could not parse ..``, this is likely from using uppercase names as arguments to an operation which in clingo is a variable. + If the arguments come from text that was user input, you can make sure it is transformed into a string when using `_context_value`. + See :ref:`context` section for details. + + .. admonition:: Example + + Using the following code you make sure that the input saved in ``name`` is transformed into a string. + If the input is ``Ana`` the operation becomes: ``add_assumption("Ana")`` instead of ``add_assumption(Ana)``. + + .. code-block:: + + when(b1, click, call, add_assumption(_context_value(name, str))). + + +.. admonition:: **Unsure how to use a feature** + :class: tip + + If you are unsure how to use a feature, you can check the :ref:`examples` section for inspiration. + You can also use the search bar to see which examples use the feature you are interested in. + + .. admonition:: **Long response time** :class: tip @@ -40,7 +64,7 @@ If the problem is finding an optimal model you can pass a timeout to the server in the command line with the flag ``--out-timeout 10``. This will make the server stop searching for models with a bette cost after ``10`` seconds. Note that the response time might be larget than this timeout if the solver is already searching when the timeout is reached. If you pass a timeout of ``0`` the server will only get the first model, you can then keep calling the operation ``next_solution(optN)`` to improve the cost, one at a time. - Check out the `placement_optimized example `_. + Check out the `placement example `_. .. admonition:: **Can't manage to place or style things in my UI** @@ -55,6 +79,7 @@ *Is part of my ui-state* Then we recomend you use the browser's developer tools to inspect the elements and see if the styles are being applied. You can also move the HTML directly in your browser to find the right settings. Once you found them you can copy them to your :ref:`ui-files`. + We recomend taking a look at `bootstrap flex `_ for the classes you can use for flexible alignments. You can also add a border to all of your containers to see where they are placed, and then remove them once you have the right settings. To do so, just add the following line to your ui encoding: @@ -69,4 +94,3 @@ If none of the above tips help you solve your problem, please open an issue in the `clinguin repository `_. - diff --git a/docs/clinguin/reference/communication.rst b/docs/clinguin/reference/communication.rst index fde02cd8..6a1f3ead 100644 --- a/docs/clinguin/reference/communication.rst +++ b/docs/clinguin/reference/communication.rst @@ -28,6 +28,7 @@ Operations The operations are defined by the backend. These operations will interact with the domain control while performing all the required changes. Each backend will define an available list of operations. These lists can be found in :ref:`Backends`. +.. _context: ******** Context @@ -79,19 +80,16 @@ However, if the input is a string that can't be a constant, such as ``Open``, it .. admonition:: Example - - Example from the `ast example `_. - The key `selected_node` is set open clicking on a node and then this information is sustituted on the next line when the server is called to add an atom, which yeilds operation ``add_atom(show_children(X,true)))`` after the substitution, with ``X`` being the selected node. + The content information is sustituted when the server is called to add an assumption, which yeilds operation ``add_assumption(name)``. .. code-block:: - when(node(X), click, context, (selected_node, X)):- node(X). - when(button1, click, call, add_atom(show_children(_context_value(selected_node),true))). + when(b1, click, call, add_assumption(_context_value(t1_content)). .. admonition:: Example - Example from the `ast example `_. + Example from the `tree_browser example `_. When this button is clicked, the value of the key ``show_download`` will be accessed and transfoermed into a string. If no value is provided then it is substituted by "#show assign/2.". .. code-block:: @@ -108,7 +106,7 @@ Notice that the _clinguin_context predicate will only include things after a ser .. tip:: - If some of the context wants to be preserved between calls to the server, it can be done manually in the UI encoding by using the event ``load`` of the ``window``. An example is provided below, which is used in the `ast example `_. + If some of the context wants to be preserved between calls to the server, it can be done manually in the UI encoding by using the event ``load`` of the ``window``. .. code-block:: diff --git a/docs/clinguin/reference/state.rst b/docs/clinguin/reference/state.rst index 0f164d09..4a093aa3 100644 --- a/docs/clinguin/reference/state.rst +++ b/docs/clinguin/reference/state.rst @@ -106,10 +106,10 @@ A set of facts defining the state of the domain, which will be used as input to These facts are generated by multiple domain-state constructors defined by the backend. Each backend will define its own domain-state constructors which can involve solve calls or any other information. The domain-state constructors can be found in :ref:`backends`. -In what follows we explain in detail the list of base constructors used in the :ref:`ClingoMultishotBackend`, +In what follows we explain in detail the list of base constructors used in the :ref:`ClingoBackend`, for further details check the API documentation for the backend of your interest. -The domain state of :ref:`ClingoMultishotBackend` will provide a model and some useful reasoning information; +The domain state of :ref:`ClingoBackend` will provide a model and some useful reasoning information; when creating a UI one usually needs to reason with what is still *possibly* part of the solution and what is *necessarily* in the solution. In ASP terms, we use the following brave and cautious reasoning to provide this information as explained below. diff --git a/docs/clinguin/reference/structure.rst b/docs/clinguin/reference/structure.rst index a388300b..e0530f11 100644 --- a/docs/clinguin/reference/structure.rst +++ b/docs/clinguin/reference/structure.rst @@ -24,10 +24,10 @@ Users can create their own Backend to increase functionality (:ref:`CustomBacken We provide the following :ref:`Backends` with the system: * *ClingoBackend*: Basic clingo functionality using single-shot solving -* *ClingoMultishotBackend*: clingo functionality using multi-shot solving -* *ClingraphBackend*: ClingoMultishotBackend enhanced with the option to render and interact with Clingraph images -* *ExplanationBackend*: ClingoMultishotBackend enhanced with explanation functionalities via Minimal Unsatisfiable Cores -* *ClingoDLBackend*: ClingoMultishotBackend enhanced with `clingod-dl `_ +* *ClingoBackend*: clingo functionality using multi-shot solving +* *ClingraphBackend*: ClingoBackend enhanced with the option to render and interact with Clingraph images +* *ExplanationBackend*: ClingoBackend enhanced with explanation functionalities via Minimal Unsatisfiable Cores +* *ClingoDLBackend*: ClingoBackend enhanced with `clingod-dl `_ diff --git a/docs/clinguin/use.rst b/docs/clinguin/use.rst index 8667543b..fa2fca28 100644 --- a/docs/clinguin/use.rst +++ b/docs/clinguin/use.rst @@ -7,12 +7,7 @@ We will use the `sudoku example `_. The ASP files defining the `instance `_ and `encoding `_ for the sudoku are considered the :ref:`domain-files`. -.. image:: ../../examples/angular/sudoku/out1.png - :width: 45% - :align: left -.. image:: ../../examples/angular/sudoku/out2.png - :width: 45% - :align: right +.. image:: ../../examples/angular/sudoku/ui.gif Running clinguin @@ -94,7 +89,7 @@ The first four lines will set the size and position of the dropdown. The special As part of the dropdown we add the different dropdown menu items for all possible values the cell can take. In this case we add all values as items by using the ``class`` attribute; those that are not part of the brave consequences will apear in red and disabled. When a click is performed on the item, the server will be called and instructed to perform the operation ``add_assumption(sudoku(X,Y,V))``. -The avaliable operations are defined by the selected backend, in this case we use the :ref:`ClingoMultishotBackend` which is the default, and recomended one. +The avaliable operations are defined by the selected backend, in this case we use the :ref:`ClingoBackend` which is the default, and recomended one. .. code-block:: diff --git a/docs/conf.py b/docs/conf.py index 54dcba8c..02483beb 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -38,7 +38,7 @@ author = "Susana Hahn, Alexander Beiser" # The full version, including alpha/beta/rc tags -release = "1.0.24" +release = "1.0.27" # -- General configuration --------------------------------------------------- diff --git a/docs/index.rst b/docs/index.rst index 6477c0dd..093edaac 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -15,17 +15,18 @@ UIs are defined as sets of facts, which are then rendered by a fronted to provi - :ref:`Backends`: Available operations and the predicates that will be available to create the UI. - :ref:`Customization`: Create your own backend or contribute with the *clinguin* project. - :ref:`Help`: If you are having trouble. -- :ref:`💡 Examples`: To get inspiration for your UI. +- :ref:`Examples`: To get inspiration for your UI. **Here is a motivation example:** -Consider an ASP encoding that solves the sudoku puzzle where cells are defined by prediate ``pos(X,Y)`` and solutions by ``sudoku(X,Y,V)`` -Clinguin will use this encoding and the following ui encoding to construct the UI shown bellow. +Consider an ASP encoding that solves the sudoku puzzle (:ref:`sudoku basic`) where cells are defined by prediate ``pos(X,Y)`` and solutions by ``sudoku(X,Y,V)`` +clinguin will use this encoding and the following UI encoding to construct the UI shown bellow. .. code-block:: elem(window, window, root). attr(window, child_layout, grid). + attr(window,class,("justify-content-start")). elem(dd(X,Y), dropdown_menu, window) :- pos(X,Y). attr(dd(X,Y), width, 50) :- pos(X,Y). @@ -42,15 +43,10 @@ Clinguin will use this encoding and the following ui encoding to construct the U -.. image:: ../examples/angular/sudoku_basic/out1.png - :width: 30% -.. image:: ../examples/angular/sudoku_basic/out2.png - :width: 30% -.. image:: ../examples/angular/sudoku_basic/out3.png - :width: 30% +.. image:: ../examples/angular/sudoku_basic/ui.gif -.. note:: Clinguin is part the Potassco umbrella (which is the home of Clingo and the other ASP tools) +.. note:: Clinguin is part of the `Potassco umbrella `_ (which is the home of Clingo and the other ASP tools) .. toctree:: :hidden: @@ -61,7 +57,7 @@ Clinguin will use this encoding and the following ui encoding to construct the U clinguin/frontends/index clinguin/backends/index clinguin/development/index - clinguin/examples_readme + clinguin/examples/index clinguin/help diff --git a/examples/README.md b/examples/README.md index 9c754f1c..a0697f9f 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,43 +1,42 @@ # 💡 Examples -Our **[examples folder](https://github.com/potassco/clinguin/tree/master/examples)** shows how to use the range of functionalities in different applications. Follow the links and check out their UI encodings in GitHub to get inspiration. All the examples shown here use the AngularFrontend and different backends. +Our examples show how to use the range of functionalities in different applications. Follow the links and check out their UI encodings in GitHub to get inspiration. All the examples shown here use the AngularFrontend and different backends. -## ClingoMultiShot Backend +To run the example we suggest downloading clinguin source files as a zip. All the command line examples in this folder expect the user to be standing in the ``examples/angular`` folder. + +## Clingo Backend ### [knapsack](https://github.com/potassco/clinguin/tree/master/examples/angular/knapsack) - + -### [placement_optimized](https://github.com/potassco/clinguin/tree/master/examples/angular/placement_optimized) +### [placement](https://github.com/potassco/clinguin/tree/master/examples/angular/placement) - + ### [sudoku](https://github.com/potassco/clinguin/tree/master/examples/angular/sudoku) - + ### [elevator](https://github.com/potassco/clinguin/tree/master/examples/angular/elevator) - + ### [study_regulations](https://github.com/potassco/clinguin/tree/master/examples/angular/study_regulations) - + -### [style](https://github.com/potassco/clinguin/tree/master/examples/angular/style) - ## Clingraph Backend ### [graph_coloring](https://github.com/potassco/clinguin/tree/master/examples/angular/graph_coloring) - + ### [tree_browser](https://github.com/potassco/clinguin/tree/master/examples/angular/tree_browser) - - + ## Explanation Backend @@ -45,20 +44,18 @@ Our **[examples folder](https://github.com/potassco/clinguin/tree/master/example ### [catdog](https://github.com/potassco/clinguin/tree/master/examples/angular/catdog) - - + + ### [sudoku_advanced](https://github.com/potassco/clinguin/tree/master/examples/angular/sudoku_advanced) - - + + ## ClingoDL Backend ### [jobshop](https://github.com/potassco/clinguin/tree/master/examples/angular/jobshop) - + diff --git a/examples/angular/ast/README.md b/examples/angular/ast/README.md deleted file mode 100644 index b5590d88..00000000 --- a/examples/angular/ast/README.md +++ /dev/null @@ -1,13 +0,0 @@ -## AST - -- **Backend**: `ClingraphBackend` -- **Frontend**: `AngularFrontend` - -### Usage - -``` -clinguin client-server --domain-files examples/angular/ast/encoding.lp examples/angular/ast/instance.lp --ui-files examples/angular/ast/ui.lp --backend=ClingraphBackend --clingraph-files=examples/angular/ast/viz.lp -``` - -![](out1.png) -![](out2.png) diff --git a/examples/angular/ast/encoding.lp b/examples/angular/ast/encoding.lp deleted file mode 100644 index edf5748c..00000000 --- a/examples/angular/ast/encoding.lp +++ /dev/null @@ -1,14 +0,0 @@ -#defined user_input/5. -#defined show_children/2. -#defined show_all/0. - -ast_show(node,0). -ast_ancestor(0,0). -ast_ancestor(A,N) :- ast_edge(I, _, _), I = (A, N), ast_show(node, A), ast_show(node,N). -ast_ancestor(A,N) :- ast_edge(I1, _,_), I1 = (A,P), ast_ancestor(P,N). - -ast_show(node, C) :- ast_edge((P,C),_,_), show_children(P,true), not ast_node(C, type, "Location"). -ast_show(edge, I) :- ast_edge(I, _, _), I = (I1, I2), ast_show(node, I1), ast_show(node,I2). - -ast_show(node, C) :- show_all, ast_edge((P,C),_,_), ast_ancestor(A,P), not ast_node(C, type, "Location"). -ast_show(edge, I) :- show_all, ast_edge(I, _, _), I = (I1, I2), ast_show(node, I1), ast_show(node,I2). \ No newline at end of file diff --git a/examples/angular/ast/instance.lp b/examples/angular/ast/instance.lp deleted file mode 100644 index 217cf44c..00000000 --- a/examples/angular/ast/instance.lp +++ /dev/null @@ -1,4946 +0,0 @@ -ast_node(0,type,"ASTSequence"). -ast_node(0,level,0). -ast_node(1,type,"AST"). -ast_node(1,level,1). -ast_node(1,variant,"Program"). -ast_node(1,value,"#program base."). -ast_node(2,type,"Location"). -ast_node(2,level,2). -ast_node(3,type,"Position"). -ast_node(3,level,3). -ast_node(4,type,"int"). -ast_node(4,level,4). -ast_node(4,value,1). -ast_node(5,type,"str"). -ast_node(5,level,4). -ast_node(5,value,"color.lp"). -ast_node(6,type,"int"). -ast_node(6,level,4). -ast_node(6,value,1). -ast_node(7,type,"Position"). -ast_node(7,level,3). -ast_node(8,type,"int"). -ast_node(8,level,4). -ast_node(8,value,1). -ast_node(9,type,"str"). -ast_node(9,level,4). -ast_node(9,value,"color.lp"). -ast_node(10,type,"int"). -ast_node(10,level,4). -ast_node(10,value,1). -ast_node(11,type,"str"). -ast_node(11,level,2). -ast_node(11,value,"base"). -ast_node(12,type,"ASTSequence"). -ast_node(12,level,2). -ast_node(13,type,"AST"). -ast_node(13,level,1). -ast_node(13,variant,"Rule"). -ast_node(13,value,"node((1..6))."). -ast_node(14,type,"Location"). -ast_node(14,level,2). -ast_node(15,type,"Position"). -ast_node(15,level,3). -ast_node(16,type,"int"). -ast_node(16,level,4). -ast_node(16,value,1). -ast_node(17,type,"str"). -ast_node(17,level,4). -ast_node(17,value,"color.lp"). -ast_node(18,type,"int"). -ast_node(18,level,4). -ast_node(18,value,1). -ast_node(19,type,"Position"). -ast_node(19,level,3). -ast_node(20,type,"int"). -ast_node(20,level,4). -ast_node(20,value,12). -ast_node(21,type,"str"). -ast_node(21,level,4). -ast_node(21,value,"color.lp"). -ast_node(22,type,"int"). -ast_node(22,level,4). -ast_node(22,value,1). -ast_node(23,type,"AST"). -ast_node(23,level,2). -ast_node(23,variant,"Literal"). -ast_node(23,value,"node((1..6))"). -ast_node(24,type,"Location"). -ast_node(24,level,3). -ast_node(25,type,"Position"). -ast_node(25,level,4). -ast_node(26,type,"int"). -ast_node(26,level,5). -ast_node(26,value,1). -ast_node(27,type,"str"). -ast_node(27,level,5). -ast_node(27,value,"color.lp"). -ast_node(28,type,"int"). -ast_node(28,level,5). -ast_node(28,value,1). -ast_node(29,type,"Position"). -ast_node(29,level,4). -ast_node(30,type,"int"). -ast_node(30,level,5). -ast_node(30,value,11). -ast_node(31,type,"str"). -ast_node(31,level,5). -ast_node(31,value,"color.lp"). -ast_node(32,type,"int"). -ast_node(32,level,5). -ast_node(32,value,1). -ast_node(33,type,"int"). -ast_node(33,level,3). -ast_node(33,value,0). -ast_node(34,type,"AST"). -ast_node(34,level,3). -ast_node(34,variant,"SymbolicAtom"). -ast_node(34,value,"node((1..6))"). -ast_node(35,type,"AST"). -ast_node(35,level,4). -ast_node(35,variant,"Function"). -ast_node(35,value,"node((1..6))"). -ast_node(36,type,"Location"). -ast_node(36,level,5). -ast_node(37,type,"Position"). -ast_node(37,level,6). -ast_node(38,type,"int"). -ast_node(38,level,7). -ast_node(38,value,1). -ast_node(39,type,"str"). -ast_node(39,level,7). -ast_node(39,value,"color.lp"). -ast_node(40,type,"int"). -ast_node(40,level,7). -ast_node(40,value,1). -ast_node(41,type,"Position"). -ast_node(41,level,6). -ast_node(42,type,"int"). -ast_node(42,level,7). -ast_node(42,value,11). -ast_node(43,type,"str"). -ast_node(43,level,7). -ast_node(43,value,"color.lp"). -ast_node(44,type,"int"). -ast_node(44,level,7). -ast_node(44,value,1). -ast_node(45,type,"str"). -ast_node(45,level,5). -ast_node(45,value,"node"). -ast_node(46,type,"ASTSequence"). -ast_node(46,level,5). -ast_node(47,type,"AST"). -ast_node(47,level,6). -ast_node(47,variant,"Interval"). -ast_node(47,value,"(1..6)"). -ast_node(48,type,"Location"). -ast_node(48,level,7). -ast_node(49,type,"Position"). -ast_node(49,level,8). -ast_node(50,type,"int"). -ast_node(50,level,9). -ast_node(50,value,6). -ast_node(51,type,"str"). -ast_node(51,level,9). -ast_node(51,value,"color.lp"). -ast_node(52,type,"int"). -ast_node(52,level,9). -ast_node(52,value,1). -ast_node(53,type,"Position"). -ast_node(53,level,8). -ast_node(54,type,"int"). -ast_node(54,level,9). -ast_node(54,value,10). -ast_node(55,type,"str"). -ast_node(55,level,9). -ast_node(55,value,"color.lp"). -ast_node(56,type,"int"). -ast_node(56,level,9). -ast_node(56,value,1). -ast_node(57,type,"AST"). -ast_node(57,level,7). -ast_node(57,variant,"SymbolicTerm"). -ast_node(57,value,"1"). -ast_node(58,type,"Location"). -ast_node(58,level,8). -ast_node(59,type,"Position"). -ast_node(59,level,9). -ast_node(60,type,"int"). -ast_node(60,level,10). -ast_node(60,value,6). -ast_node(61,type,"str"). -ast_node(61,level,10). -ast_node(61,value,"color.lp"). -ast_node(62,type,"int"). -ast_node(62,level,10). -ast_node(62,value,1). -ast_node(63,type,"Position"). -ast_node(63,level,9). -ast_node(64,type,"int"). -ast_node(64,level,10). -ast_node(64,value,7). -ast_node(65,type,"str"). -ast_node(65,level,10). -ast_node(65,value,"color.lp"). -ast_node(66,type,"int"). -ast_node(66,level,10). -ast_node(66,value,1). -ast_node(67,type,"Symbol"). -ast_node(67,level,8). -ast_node(67,value,"1"). -ast_node(68,type,"AST"). -ast_node(68,level,7). -ast_node(68,variant,"SymbolicTerm"). -ast_node(68,value,"6"). -ast_node(69,type,"Location"). -ast_node(69,level,8). -ast_node(70,type,"Position"). -ast_node(70,level,9). -ast_node(71,type,"int"). -ast_node(71,level,10). -ast_node(71,value,9). -ast_node(72,type,"str"). -ast_node(72,level,10). -ast_node(72,value,"color.lp"). -ast_node(73,type,"int"). -ast_node(73,level,10). -ast_node(73,value,1). -ast_node(74,type,"Position"). -ast_node(74,level,9). -ast_node(75,type,"int"). -ast_node(75,level,10). -ast_node(75,value,10). -ast_node(76,type,"str"). -ast_node(76,level,10). -ast_node(76,value,"color.lp"). -ast_node(77,type,"int"). -ast_node(77,level,10). -ast_node(77,value,1). -ast_node(78,type,"Symbol"). -ast_node(78,level,8). -ast_node(78,value,"6"). -ast_node(79,type,"int"). -ast_node(79,level,5). -ast_node(79,value,0). -ast_node(80,type,"ASTSequence"). -ast_node(80,level,2). -ast_node(81,type,"AST"). -ast_node(81,level,1). -ast_node(81,variant,"Rule"). -ast_node(81,value,"edge(1,2)."). -ast_node(82,type,"Location"). -ast_node(82,level,2). -ast_node(83,type,"Position"). -ast_node(83,level,3). -ast_node(84,type,"int"). -ast_node(84,level,4). -ast_node(84,value,1). -ast_node(85,type,"str"). -ast_node(85,level,4). -ast_node(85,value,"color.lp"). -ast_node(86,type,"int"). -ast_node(86,level,4). -ast_node(86,value,3). -ast_node(87,type,"Position"). -ast_node(87,level,3). -ast_node(88,type,"int"). -ast_node(88,level,4). -ast_node(88,value,11). -ast_node(89,type,"str"). -ast_node(89,level,4). -ast_node(89,value,"color.lp"). -ast_node(90,type,"int"). -ast_node(90,level,4). -ast_node(90,value,3). -ast_node(91,type,"AST"). -ast_node(91,level,2). -ast_node(91,variant,"Literal"). -ast_node(91,value,"edge(1,2)"). -ast_node(92,type,"Location"). -ast_node(92,level,3). -ast_node(93,type,"Position"). -ast_node(93,level,4). -ast_node(94,type,"int"). -ast_node(94,level,5). -ast_node(94,value,1). -ast_node(95,type,"str"). -ast_node(95,level,5). -ast_node(95,value,"color.lp"). -ast_node(96,type,"int"). -ast_node(96,level,5). -ast_node(96,value,3). -ast_node(97,type,"Position"). -ast_node(97,level,4). -ast_node(98,type,"int"). -ast_node(98,level,5). -ast_node(98,value,10). -ast_node(99,type,"str"). -ast_node(99,level,5). -ast_node(99,value,"color.lp"). -ast_node(100,type,"int"). -ast_node(100,level,5). -ast_node(100,value,3). -ast_node(101,type,"int"). -ast_node(101,level,3). -ast_node(101,value,0). -ast_node(102,type,"AST"). -ast_node(102,level,3). -ast_node(102,variant,"SymbolicAtom"). -ast_node(102,value,"edge(1,2)"). -ast_node(103,type,"AST"). -ast_node(103,level,4). -ast_node(103,variant,"Function"). -ast_node(103,value,"edge(1,2)"). -ast_node(104,type,"Location"). -ast_node(104,level,5). -ast_node(105,type,"Position"). -ast_node(105,level,6). -ast_node(106,type,"int"). -ast_node(106,level,7). -ast_node(106,value,1). -ast_node(107,type,"str"). -ast_node(107,level,7). -ast_node(107,value,"color.lp"). -ast_node(108,type,"int"). -ast_node(108,level,7). -ast_node(108,value,3). -ast_node(109,type,"Position"). -ast_node(109,level,6). -ast_node(110,type,"int"). -ast_node(110,level,7). -ast_node(110,value,10). -ast_node(111,type,"str"). -ast_node(111,level,7). -ast_node(111,value,"color.lp"). -ast_node(112,type,"int"). -ast_node(112,level,7). -ast_node(112,value,3). -ast_node(113,type,"str"). -ast_node(113,level,5). -ast_node(113,value,"edge"). -ast_node(114,type,"ASTSequence"). -ast_node(114,level,5). -ast_node(115,type,"AST"). -ast_node(115,level,6). -ast_node(115,variant,"SymbolicTerm"). -ast_node(115,value,"1"). -ast_node(116,type,"Location"). -ast_node(116,level,7). -ast_node(117,type,"Position"). -ast_node(117,level,8). -ast_node(118,type,"int"). -ast_node(118,level,9). -ast_node(118,value,6). -ast_node(119,type,"str"). -ast_node(119,level,9). -ast_node(119,value,"color.lp"). -ast_node(120,type,"int"). -ast_node(120,level,9). -ast_node(120,value,3). -ast_node(121,type,"Position"). -ast_node(121,level,8). -ast_node(122,type,"int"). -ast_node(122,level,9). -ast_node(122,value,7). -ast_node(123,type,"str"). -ast_node(123,level,9). -ast_node(123,value,"color.lp"). -ast_node(124,type,"int"). -ast_node(124,level,9). -ast_node(124,value,3). -ast_node(125,type,"Symbol"). -ast_node(125,level,7). -ast_node(125,value,"1"). -ast_node(126,type,"AST"). -ast_node(126,level,6). -ast_node(126,variant,"SymbolicTerm"). -ast_node(126,value,"2"). -ast_node(127,type,"Location"). -ast_node(127,level,7). -ast_node(128,type,"Position"). -ast_node(128,level,8). -ast_node(129,type,"int"). -ast_node(129,level,9). -ast_node(129,value,8). -ast_node(130,type,"str"). -ast_node(130,level,9). -ast_node(130,value,"color.lp"). -ast_node(131,type,"int"). -ast_node(131,level,9). -ast_node(131,value,3). -ast_node(132,type,"Position"). -ast_node(132,level,8). -ast_node(133,type,"int"). -ast_node(133,level,9). -ast_node(133,value,9). -ast_node(134,type,"str"). -ast_node(134,level,9). -ast_node(134,value,"color.lp"). -ast_node(135,type,"int"). -ast_node(135,level,9). -ast_node(135,value,3). -ast_node(136,type,"Symbol"). -ast_node(136,level,7). -ast_node(136,value,"2"). -ast_node(137,type,"int"). -ast_node(137,level,5). -ast_node(137,value,0). -ast_node(138,type,"ASTSequence"). -ast_node(138,level,2). -ast_node(139,type,"AST"). -ast_node(139,level,1). -ast_node(139,variant,"Rule"). -ast_node(139,value,"edge(1,3)."). -ast_node(140,type,"Location"). -ast_node(140,level,2). -ast_node(141,type,"Position"). -ast_node(141,level,3). -ast_node(142,type,"int"). -ast_node(142,level,4). -ast_node(142,value,12). -ast_node(143,type,"str"). -ast_node(143,level,4). -ast_node(143,value,"color.lp"). -ast_node(144,type,"int"). -ast_node(144,level,4). -ast_node(144,value,3). -ast_node(145,type,"Position"). -ast_node(145,level,3). -ast_node(146,type,"int"). -ast_node(146,level,4). -ast_node(146,value,22). -ast_node(147,type,"str"). -ast_node(147,level,4). -ast_node(147,value,"color.lp"). -ast_node(148,type,"int"). -ast_node(148,level,4). -ast_node(148,value,3). -ast_node(149,type,"AST"). -ast_node(149,level,2). -ast_node(149,variant,"Literal"). -ast_node(149,value,"edge(1,3)"). -ast_node(150,type,"Location"). -ast_node(150,level,3). -ast_node(151,type,"Position"). -ast_node(151,level,4). -ast_node(152,type,"int"). -ast_node(152,level,5). -ast_node(152,value,12). -ast_node(153,type,"str"). -ast_node(153,level,5). -ast_node(153,value,"color.lp"). -ast_node(154,type,"int"). -ast_node(154,level,5). -ast_node(154,value,3). -ast_node(155,type,"Position"). -ast_node(155,level,4). -ast_node(156,type,"int"). -ast_node(156,level,5). -ast_node(156,value,21). -ast_node(157,type,"str"). -ast_node(157,level,5). -ast_node(157,value,"color.lp"). -ast_node(158,type,"int"). -ast_node(158,level,5). -ast_node(158,value,3). -ast_node(159,type,"int"). -ast_node(159,level,3). -ast_node(159,value,0). -ast_node(160,type,"AST"). -ast_node(160,level,3). -ast_node(160,variant,"SymbolicAtom"). -ast_node(160,value,"edge(1,3)"). -ast_node(161,type,"AST"). -ast_node(161,level,4). -ast_node(161,variant,"Function"). -ast_node(161,value,"edge(1,3)"). -ast_node(162,type,"Location"). -ast_node(162,level,5). -ast_node(163,type,"Position"). -ast_node(163,level,6). -ast_node(164,type,"int"). -ast_node(164,level,7). -ast_node(164,value,12). -ast_node(165,type,"str"). -ast_node(165,level,7). -ast_node(165,value,"color.lp"). -ast_node(166,type,"int"). -ast_node(166,level,7). -ast_node(166,value,3). -ast_node(167,type,"Position"). -ast_node(167,level,6). -ast_node(168,type,"int"). -ast_node(168,level,7). -ast_node(168,value,21). -ast_node(169,type,"str"). -ast_node(169,level,7). -ast_node(169,value,"color.lp"). -ast_node(170,type,"int"). -ast_node(170,level,7). -ast_node(170,value,3). -ast_node(171,type,"str"). -ast_node(171,level,5). -ast_node(171,value,"edge"). -ast_node(172,type,"ASTSequence"). -ast_node(172,level,5). -ast_node(173,type,"AST"). -ast_node(173,level,6). -ast_node(173,variant,"SymbolicTerm"). -ast_node(173,value,"1"). -ast_node(174,type,"Location"). -ast_node(174,level,7). -ast_node(175,type,"Position"). -ast_node(175,level,8). -ast_node(176,type,"int"). -ast_node(176,level,9). -ast_node(176,value,17). -ast_node(177,type,"str"). -ast_node(177,level,9). -ast_node(177,value,"color.lp"). -ast_node(178,type,"int"). -ast_node(178,level,9). -ast_node(178,value,3). -ast_node(179,type,"Position"). -ast_node(179,level,8). -ast_node(180,type,"int"). -ast_node(180,level,9). -ast_node(180,value,18). -ast_node(181,type,"str"). -ast_node(181,level,9). -ast_node(181,value,"color.lp"). -ast_node(182,type,"int"). -ast_node(182,level,9). -ast_node(182,value,3). -ast_node(183,type,"Symbol"). -ast_node(183,level,7). -ast_node(183,value,"1"). -ast_node(184,type,"AST"). -ast_node(184,level,6). -ast_node(184,variant,"SymbolicTerm"). -ast_node(184,value,"3"). -ast_node(185,type,"Location"). -ast_node(185,level,7). -ast_node(186,type,"Position"). -ast_node(186,level,8). -ast_node(187,type,"int"). -ast_node(187,level,9). -ast_node(187,value,19). -ast_node(188,type,"str"). -ast_node(188,level,9). -ast_node(188,value,"color.lp"). -ast_node(189,type,"int"). -ast_node(189,level,9). -ast_node(189,value,3). -ast_node(190,type,"Position"). -ast_node(190,level,8). -ast_node(191,type,"int"). -ast_node(191,level,9). -ast_node(191,value,20). -ast_node(192,type,"str"). -ast_node(192,level,9). -ast_node(192,value,"color.lp"). -ast_node(193,type,"int"). -ast_node(193,level,9). -ast_node(193,value,3). -ast_node(194,type,"Symbol"). -ast_node(194,level,7). -ast_node(194,value,"3"). -ast_node(195,type,"int"). -ast_node(195,level,5). -ast_node(195,value,0). -ast_node(196,type,"ASTSequence"). -ast_node(196,level,2). -ast_node(197,type,"AST"). -ast_node(197,level,1). -ast_node(197,variant,"Rule"). -ast_node(197,value,"edge(1,4)."). -ast_node(198,type,"Location"). -ast_node(198,level,2). -ast_node(199,type,"Position"). -ast_node(199,level,3). -ast_node(200,type,"int"). -ast_node(200,level,4). -ast_node(200,value,23). -ast_node(201,type,"str"). -ast_node(201,level,4). -ast_node(201,value,"color.lp"). -ast_node(202,type,"int"). -ast_node(202,level,4). -ast_node(202,value,3). -ast_node(203,type,"Position"). -ast_node(203,level,3). -ast_node(204,type,"int"). -ast_node(204,level,4). -ast_node(204,value,33). -ast_node(205,type,"str"). -ast_node(205,level,4). -ast_node(205,value,"color.lp"). -ast_node(206,type,"int"). -ast_node(206,level,4). -ast_node(206,value,3). -ast_node(207,type,"AST"). -ast_node(207,level,2). -ast_node(207,variant,"Literal"). -ast_node(207,value,"edge(1,4)"). -ast_node(208,type,"Location"). -ast_node(208,level,3). -ast_node(209,type,"Position"). -ast_node(209,level,4). -ast_node(210,type,"int"). -ast_node(210,level,5). -ast_node(210,value,23). -ast_node(211,type,"str"). -ast_node(211,level,5). -ast_node(211,value,"color.lp"). -ast_node(212,type,"int"). -ast_node(212,level,5). -ast_node(212,value,3). -ast_node(213,type,"Position"). -ast_node(213,level,4). -ast_node(214,type,"int"). -ast_node(214,level,5). -ast_node(214,value,32). -ast_node(215,type,"str"). -ast_node(215,level,5). -ast_node(215,value,"color.lp"). -ast_node(216,type,"int"). -ast_node(216,level,5). -ast_node(216,value,3). -ast_node(217,type,"int"). -ast_node(217,level,3). -ast_node(217,value,0). -ast_node(218,type,"AST"). -ast_node(218,level,3). -ast_node(218,variant,"SymbolicAtom"). -ast_node(218,value,"edge(1,4)"). -ast_node(219,type,"AST"). -ast_node(219,level,4). -ast_node(219,variant,"Function"). -ast_node(219,value,"edge(1,4)"). -ast_node(220,type,"Location"). -ast_node(220,level,5). -ast_node(221,type,"Position"). -ast_node(221,level,6). -ast_node(222,type,"int"). -ast_node(222,level,7). -ast_node(222,value,23). -ast_node(223,type,"str"). -ast_node(223,level,7). -ast_node(223,value,"color.lp"). -ast_node(224,type,"int"). -ast_node(224,level,7). -ast_node(224,value,3). -ast_node(225,type,"Position"). -ast_node(225,level,6). -ast_node(226,type,"int"). -ast_node(226,level,7). -ast_node(226,value,32). -ast_node(227,type,"str"). -ast_node(227,level,7). -ast_node(227,value,"color.lp"). -ast_node(228,type,"int"). -ast_node(228,level,7). -ast_node(228,value,3). -ast_node(229,type,"str"). -ast_node(229,level,5). -ast_node(229,value,"edge"). -ast_node(230,type,"ASTSequence"). -ast_node(230,level,5). -ast_node(231,type,"AST"). -ast_node(231,level,6). -ast_node(231,variant,"SymbolicTerm"). -ast_node(231,value,"1"). -ast_node(232,type,"Location"). -ast_node(232,level,7). -ast_node(233,type,"Position"). -ast_node(233,level,8). -ast_node(234,type,"int"). -ast_node(234,level,9). -ast_node(234,value,28). -ast_node(235,type,"str"). -ast_node(235,level,9). -ast_node(235,value,"color.lp"). -ast_node(236,type,"int"). -ast_node(236,level,9). -ast_node(236,value,3). -ast_node(237,type,"Position"). -ast_node(237,level,8). -ast_node(238,type,"int"). -ast_node(238,level,9). -ast_node(238,value,29). -ast_node(239,type,"str"). -ast_node(239,level,9). -ast_node(239,value,"color.lp"). -ast_node(240,type,"int"). -ast_node(240,level,9). -ast_node(240,value,3). -ast_node(241,type,"Symbol"). -ast_node(241,level,7). -ast_node(241,value,"1"). -ast_node(242,type,"AST"). -ast_node(242,level,6). -ast_node(242,variant,"SymbolicTerm"). -ast_node(242,value,"4"). -ast_node(243,type,"Location"). -ast_node(243,level,7). -ast_node(244,type,"Position"). -ast_node(244,level,8). -ast_node(245,type,"int"). -ast_node(245,level,9). -ast_node(245,value,30). -ast_node(246,type,"str"). -ast_node(246,level,9). -ast_node(246,value,"color.lp"). -ast_node(247,type,"int"). -ast_node(247,level,9). -ast_node(247,value,3). -ast_node(248,type,"Position"). -ast_node(248,level,8). -ast_node(249,type,"int"). -ast_node(249,level,9). -ast_node(249,value,31). -ast_node(250,type,"str"). -ast_node(250,level,9). -ast_node(250,value,"color.lp"). -ast_node(251,type,"int"). -ast_node(251,level,9). -ast_node(251,value,3). -ast_node(252,type,"Symbol"). -ast_node(252,level,7). -ast_node(252,value,"4"). -ast_node(253,type,"int"). -ast_node(253,level,5). -ast_node(253,value,0). -ast_node(254,type,"ASTSequence"). -ast_node(254,level,2). -ast_node(255,type,"AST"). -ast_node(255,level,1). -ast_node(255,variant,"Rule"). -ast_node(255,value,"edge(2,4)."). -ast_node(256,type,"Location"). -ast_node(256,level,2). -ast_node(257,type,"Position"). -ast_node(257,level,3). -ast_node(258,type,"int"). -ast_node(258,level,4). -ast_node(258,value,34). -ast_node(259,type,"str"). -ast_node(259,level,4). -ast_node(259,value,"color.lp"). -ast_node(260,type,"int"). -ast_node(260,level,4). -ast_node(260,value,3). -ast_node(261,type,"Position"). -ast_node(261,level,3). -ast_node(262,type,"int"). -ast_node(262,level,4). -ast_node(262,value,44). -ast_node(263,type,"str"). -ast_node(263,level,4). -ast_node(263,value,"color.lp"). -ast_node(264,type,"int"). -ast_node(264,level,4). -ast_node(264,value,3). -ast_node(265,type,"AST"). -ast_node(265,level,2). -ast_node(265,variant,"Literal"). -ast_node(265,value,"edge(2,4)"). -ast_node(266,type,"Location"). -ast_node(266,level,3). -ast_node(267,type,"Position"). -ast_node(267,level,4). -ast_node(268,type,"int"). -ast_node(268,level,5). -ast_node(268,value,34). -ast_node(269,type,"str"). -ast_node(269,level,5). -ast_node(269,value,"color.lp"). -ast_node(270,type,"int"). -ast_node(270,level,5). -ast_node(270,value,3). -ast_node(271,type,"Position"). -ast_node(271,level,4). -ast_node(272,type,"int"). -ast_node(272,level,5). -ast_node(272,value,43). -ast_node(273,type,"str"). -ast_node(273,level,5). -ast_node(273,value,"color.lp"). -ast_node(274,type,"int"). -ast_node(274,level,5). -ast_node(274,value,3). -ast_node(275,type,"int"). -ast_node(275,level,3). -ast_node(275,value,0). -ast_node(276,type,"AST"). -ast_node(276,level,3). -ast_node(276,variant,"SymbolicAtom"). -ast_node(276,value,"edge(2,4)"). -ast_node(277,type,"AST"). -ast_node(277,level,4). -ast_node(277,variant,"Function"). -ast_node(277,value,"edge(2,4)"). -ast_node(278,type,"Location"). -ast_node(278,level,5). -ast_node(279,type,"Position"). -ast_node(279,level,6). -ast_node(280,type,"int"). -ast_node(280,level,7). -ast_node(280,value,34). -ast_node(281,type,"str"). -ast_node(281,level,7). -ast_node(281,value,"color.lp"). -ast_node(282,type,"int"). -ast_node(282,level,7). -ast_node(282,value,3). -ast_node(283,type,"Position"). -ast_node(283,level,6). -ast_node(284,type,"int"). -ast_node(284,level,7). -ast_node(284,value,43). -ast_node(285,type,"str"). -ast_node(285,level,7). -ast_node(285,value,"color.lp"). -ast_node(286,type,"int"). -ast_node(286,level,7). -ast_node(286,value,3). -ast_node(287,type,"str"). -ast_node(287,level,5). -ast_node(287,value,"edge"). -ast_node(288,type,"ASTSequence"). -ast_node(288,level,5). -ast_node(289,type,"AST"). -ast_node(289,level,6). -ast_node(289,variant,"SymbolicTerm"). -ast_node(289,value,"2"). -ast_node(290,type,"Location"). -ast_node(290,level,7). -ast_node(291,type,"Position"). -ast_node(291,level,8). -ast_node(292,type,"int"). -ast_node(292,level,9). -ast_node(292,value,39). -ast_node(293,type,"str"). -ast_node(293,level,9). -ast_node(293,value,"color.lp"). -ast_node(294,type,"int"). -ast_node(294,level,9). -ast_node(294,value,3). -ast_node(295,type,"Position"). -ast_node(295,level,8). -ast_node(296,type,"int"). -ast_node(296,level,9). -ast_node(296,value,40). -ast_node(297,type,"str"). -ast_node(297,level,9). -ast_node(297,value,"color.lp"). -ast_node(298,type,"int"). -ast_node(298,level,9). -ast_node(298,value,3). -ast_node(299,type,"Symbol"). -ast_node(299,level,7). -ast_node(299,value,"2"). -ast_node(300,type,"AST"). -ast_node(300,level,6). -ast_node(300,variant,"SymbolicTerm"). -ast_node(300,value,"4"). -ast_node(301,type,"Location"). -ast_node(301,level,7). -ast_node(302,type,"Position"). -ast_node(302,level,8). -ast_node(303,type,"int"). -ast_node(303,level,9). -ast_node(303,value,41). -ast_node(304,type,"str"). -ast_node(304,level,9). -ast_node(304,value,"color.lp"). -ast_node(305,type,"int"). -ast_node(305,level,9). -ast_node(305,value,3). -ast_node(306,type,"Position"). -ast_node(306,level,8). -ast_node(307,type,"int"). -ast_node(307,level,9). -ast_node(307,value,42). -ast_node(308,type,"str"). -ast_node(308,level,9). -ast_node(308,value,"color.lp"). -ast_node(309,type,"int"). -ast_node(309,level,9). -ast_node(309,value,3). -ast_node(310,type,"Symbol"). -ast_node(310,level,7). -ast_node(310,value,"4"). -ast_node(311,type,"int"). -ast_node(311,level,5). -ast_node(311,value,0). -ast_node(312,type,"ASTSequence"). -ast_node(312,level,2). -ast_node(313,type,"AST"). -ast_node(313,level,1). -ast_node(313,variant,"Rule"). -ast_node(313,value,"edge(2,5)."). -ast_node(314,type,"Location"). -ast_node(314,level,2). -ast_node(315,type,"Position"). -ast_node(315,level,3). -ast_node(316,type,"int"). -ast_node(316,level,4). -ast_node(316,value,45). -ast_node(317,type,"str"). -ast_node(317,level,4). -ast_node(317,value,"color.lp"). -ast_node(318,type,"int"). -ast_node(318,level,4). -ast_node(318,value,3). -ast_node(319,type,"Position"). -ast_node(319,level,3). -ast_node(320,type,"int"). -ast_node(320,level,4). -ast_node(320,value,55). -ast_node(321,type,"str"). -ast_node(321,level,4). -ast_node(321,value,"color.lp"). -ast_node(322,type,"int"). -ast_node(322,level,4). -ast_node(322,value,3). -ast_node(323,type,"AST"). -ast_node(323,level,2). -ast_node(323,variant,"Literal"). -ast_node(323,value,"edge(2,5)"). -ast_node(324,type,"Location"). -ast_node(324,level,3). -ast_node(325,type,"Position"). -ast_node(325,level,4). -ast_node(326,type,"int"). -ast_node(326,level,5). -ast_node(326,value,45). -ast_node(327,type,"str"). -ast_node(327,level,5). -ast_node(327,value,"color.lp"). -ast_node(328,type,"int"). -ast_node(328,level,5). -ast_node(328,value,3). -ast_node(329,type,"Position"). -ast_node(329,level,4). -ast_node(330,type,"int"). -ast_node(330,level,5). -ast_node(330,value,54). -ast_node(331,type,"str"). -ast_node(331,level,5). -ast_node(331,value,"color.lp"). -ast_node(332,type,"int"). -ast_node(332,level,5). -ast_node(332,value,3). -ast_node(333,type,"int"). -ast_node(333,level,3). -ast_node(333,value,0). -ast_node(334,type,"AST"). -ast_node(334,level,3). -ast_node(334,variant,"SymbolicAtom"). -ast_node(334,value,"edge(2,5)"). -ast_node(335,type,"AST"). -ast_node(335,level,4). -ast_node(335,variant,"Function"). -ast_node(335,value,"edge(2,5)"). -ast_node(336,type,"Location"). -ast_node(336,level,5). -ast_node(337,type,"Position"). -ast_node(337,level,6). -ast_node(338,type,"int"). -ast_node(338,level,7). -ast_node(338,value,45). -ast_node(339,type,"str"). -ast_node(339,level,7). -ast_node(339,value,"color.lp"). -ast_node(340,type,"int"). -ast_node(340,level,7). -ast_node(340,value,3). -ast_node(341,type,"Position"). -ast_node(341,level,6). -ast_node(342,type,"int"). -ast_node(342,level,7). -ast_node(342,value,54). -ast_node(343,type,"str"). -ast_node(343,level,7). -ast_node(343,value,"color.lp"). -ast_node(344,type,"int"). -ast_node(344,level,7). -ast_node(344,value,3). -ast_node(345,type,"str"). -ast_node(345,level,5). -ast_node(345,value,"edge"). -ast_node(346,type,"ASTSequence"). -ast_node(346,level,5). -ast_node(347,type,"AST"). -ast_node(347,level,6). -ast_node(347,variant,"SymbolicTerm"). -ast_node(347,value,"2"). -ast_node(348,type,"Location"). -ast_node(348,level,7). -ast_node(349,type,"Position"). -ast_node(349,level,8). -ast_node(350,type,"int"). -ast_node(350,level,9). -ast_node(350,value,50). -ast_node(351,type,"str"). -ast_node(351,level,9). -ast_node(351,value,"color.lp"). -ast_node(352,type,"int"). -ast_node(352,level,9). -ast_node(352,value,3). -ast_node(353,type,"Position"). -ast_node(353,level,8). -ast_node(354,type,"int"). -ast_node(354,level,9). -ast_node(354,value,51). -ast_node(355,type,"str"). -ast_node(355,level,9). -ast_node(355,value,"color.lp"). -ast_node(356,type,"int"). -ast_node(356,level,9). -ast_node(356,value,3). -ast_node(357,type,"Symbol"). -ast_node(357,level,7). -ast_node(357,value,"2"). -ast_node(358,type,"AST"). -ast_node(358,level,6). -ast_node(358,variant,"SymbolicTerm"). -ast_node(358,value,"5"). -ast_node(359,type,"Location"). -ast_node(359,level,7). -ast_node(360,type,"Position"). -ast_node(360,level,8). -ast_node(361,type,"int"). -ast_node(361,level,9). -ast_node(361,value,52). -ast_node(362,type,"str"). -ast_node(362,level,9). -ast_node(362,value,"color.lp"). -ast_node(363,type,"int"). -ast_node(363,level,9). -ast_node(363,value,3). -ast_node(364,type,"Position"). -ast_node(364,level,8). -ast_node(365,type,"int"). -ast_node(365,level,9). -ast_node(365,value,53). -ast_node(366,type,"str"). -ast_node(366,level,9). -ast_node(366,value,"color.lp"). -ast_node(367,type,"int"). -ast_node(367,level,9). -ast_node(367,value,3). -ast_node(368,type,"Symbol"). -ast_node(368,level,7). -ast_node(368,value,"5"). -ast_node(369,type,"int"). -ast_node(369,level,5). -ast_node(369,value,0). -ast_node(370,type,"ASTSequence"). -ast_node(370,level,2). -ast_node(371,type,"AST"). -ast_node(371,level,1). -ast_node(371,variant,"Rule"). -ast_node(371,value,"edge(2,6)."). -ast_node(372,type,"Location"). -ast_node(372,level,2). -ast_node(373,type,"Position"). -ast_node(373,level,3). -ast_node(374,type,"int"). -ast_node(374,level,4). -ast_node(374,value,1). -ast_node(375,type,"str"). -ast_node(375,level,4). -ast_node(375,value,"color.lp"). -ast_node(376,type,"int"). -ast_node(376,level,4). -ast_node(376,value,4). -ast_node(377,type,"Position"). -ast_node(377,level,3). -ast_node(378,type,"int"). -ast_node(378,level,4). -ast_node(378,value,11). -ast_node(379,type,"str"). -ast_node(379,level,4). -ast_node(379,value,"color.lp"). -ast_node(380,type,"int"). -ast_node(380,level,4). -ast_node(380,value,4). -ast_node(381,type,"AST"). -ast_node(381,level,2). -ast_node(381,variant,"Literal"). -ast_node(381,value,"edge(2,6)"). -ast_node(382,type,"Location"). -ast_node(382,level,3). -ast_node(383,type,"Position"). -ast_node(383,level,4). -ast_node(384,type,"int"). -ast_node(384,level,5). -ast_node(384,value,1). -ast_node(385,type,"str"). -ast_node(385,level,5). -ast_node(385,value,"color.lp"). -ast_node(386,type,"int"). -ast_node(386,level,5). -ast_node(386,value,4). -ast_node(387,type,"Position"). -ast_node(387,level,4). -ast_node(388,type,"int"). -ast_node(388,level,5). -ast_node(388,value,10). -ast_node(389,type,"str"). -ast_node(389,level,5). -ast_node(389,value,"color.lp"). -ast_node(390,type,"int"). -ast_node(390,level,5). -ast_node(390,value,4). -ast_node(391,type,"int"). -ast_node(391,level,3). -ast_node(391,value,0). -ast_node(392,type,"AST"). -ast_node(392,level,3). -ast_node(392,variant,"SymbolicAtom"). -ast_node(392,value,"edge(2,6)"). -ast_node(393,type,"AST"). -ast_node(393,level,4). -ast_node(393,variant,"Function"). -ast_node(393,value,"edge(2,6)"). -ast_node(394,type,"Location"). -ast_node(394,level,5). -ast_node(395,type,"Position"). -ast_node(395,level,6). -ast_node(396,type,"int"). -ast_node(396,level,7). -ast_node(396,value,1). -ast_node(397,type,"str"). -ast_node(397,level,7). -ast_node(397,value,"color.lp"). -ast_node(398,type,"int"). -ast_node(398,level,7). -ast_node(398,value,4). -ast_node(399,type,"Position"). -ast_node(399,level,6). -ast_node(400,type,"int"). -ast_node(400,level,7). -ast_node(400,value,10). -ast_node(401,type,"str"). -ast_node(401,level,7). -ast_node(401,value,"color.lp"). -ast_node(402,type,"int"). -ast_node(402,level,7). -ast_node(402,value,4). -ast_node(403,type,"str"). -ast_node(403,level,5). -ast_node(403,value,"edge"). -ast_node(404,type,"ASTSequence"). -ast_node(404,level,5). -ast_node(405,type,"AST"). -ast_node(405,level,6). -ast_node(405,variant,"SymbolicTerm"). -ast_node(405,value,"2"). -ast_node(406,type,"Location"). -ast_node(406,level,7). -ast_node(407,type,"Position"). -ast_node(407,level,8). -ast_node(408,type,"int"). -ast_node(408,level,9). -ast_node(408,value,6). -ast_node(409,type,"str"). -ast_node(409,level,9). -ast_node(409,value,"color.lp"). -ast_node(410,type,"int"). -ast_node(410,level,9). -ast_node(410,value,4). -ast_node(411,type,"Position"). -ast_node(411,level,8). -ast_node(412,type,"int"). -ast_node(412,level,9). -ast_node(412,value,7). -ast_node(413,type,"str"). -ast_node(413,level,9). -ast_node(413,value,"color.lp"). -ast_node(414,type,"int"). -ast_node(414,level,9). -ast_node(414,value,4). -ast_node(415,type,"Symbol"). -ast_node(415,level,7). -ast_node(415,value,"2"). -ast_node(416,type,"AST"). -ast_node(416,level,6). -ast_node(416,variant,"SymbolicTerm"). -ast_node(416,value,"6"). -ast_node(417,type,"Location"). -ast_node(417,level,7). -ast_node(418,type,"Position"). -ast_node(418,level,8). -ast_node(419,type,"int"). -ast_node(419,level,9). -ast_node(419,value,8). -ast_node(420,type,"str"). -ast_node(420,level,9). -ast_node(420,value,"color.lp"). -ast_node(421,type,"int"). -ast_node(421,level,9). -ast_node(421,value,4). -ast_node(422,type,"Position"). -ast_node(422,level,8). -ast_node(423,type,"int"). -ast_node(423,level,9). -ast_node(423,value,9). -ast_node(424,type,"str"). -ast_node(424,level,9). -ast_node(424,value,"color.lp"). -ast_node(425,type,"int"). -ast_node(425,level,9). -ast_node(425,value,4). -ast_node(426,type,"Symbol"). -ast_node(426,level,7). -ast_node(426,value,"6"). -ast_node(427,type,"int"). -ast_node(427,level,5). -ast_node(427,value,0). -ast_node(428,type,"ASTSequence"). -ast_node(428,level,2). -ast_node(429,type,"AST"). -ast_node(429,level,1). -ast_node(429,variant,"Rule"). -ast_node(429,value,"edge(3,4)."). -ast_node(430,type,"Location"). -ast_node(430,level,2). -ast_node(431,type,"Position"). -ast_node(431,level,3). -ast_node(432,type,"int"). -ast_node(432,level,4). -ast_node(432,value,12). -ast_node(433,type,"str"). -ast_node(433,level,4). -ast_node(433,value,"color.lp"). -ast_node(434,type,"int"). -ast_node(434,level,4). -ast_node(434,value,4). -ast_node(435,type,"Position"). -ast_node(435,level,3). -ast_node(436,type,"int"). -ast_node(436,level,4). -ast_node(436,value,22). -ast_node(437,type,"str"). -ast_node(437,level,4). -ast_node(437,value,"color.lp"). -ast_node(438,type,"int"). -ast_node(438,level,4). -ast_node(438,value,4). -ast_node(439,type,"AST"). -ast_node(439,level,2). -ast_node(439,variant,"Literal"). -ast_node(439,value,"edge(3,4)"). -ast_node(440,type,"Location"). -ast_node(440,level,3). -ast_node(441,type,"Position"). -ast_node(441,level,4). -ast_node(442,type,"int"). -ast_node(442,level,5). -ast_node(442,value,12). -ast_node(443,type,"str"). -ast_node(443,level,5). -ast_node(443,value,"color.lp"). -ast_node(444,type,"int"). -ast_node(444,level,5). -ast_node(444,value,4). -ast_node(445,type,"Position"). -ast_node(445,level,4). -ast_node(446,type,"int"). -ast_node(446,level,5). -ast_node(446,value,21). -ast_node(447,type,"str"). -ast_node(447,level,5). -ast_node(447,value,"color.lp"). -ast_node(448,type,"int"). -ast_node(448,level,5). -ast_node(448,value,4). -ast_node(449,type,"int"). -ast_node(449,level,3). -ast_node(449,value,0). -ast_node(450,type,"AST"). -ast_node(450,level,3). -ast_node(450,variant,"SymbolicAtom"). -ast_node(450,value,"edge(3,4)"). -ast_node(451,type,"AST"). -ast_node(451,level,4). -ast_node(451,variant,"Function"). -ast_node(451,value,"edge(3,4)"). -ast_node(452,type,"Location"). -ast_node(452,level,5). -ast_node(453,type,"Position"). -ast_node(453,level,6). -ast_node(454,type,"int"). -ast_node(454,level,7). -ast_node(454,value,12). -ast_node(455,type,"str"). -ast_node(455,level,7). -ast_node(455,value,"color.lp"). -ast_node(456,type,"int"). -ast_node(456,level,7). -ast_node(456,value,4). -ast_node(457,type,"Position"). -ast_node(457,level,6). -ast_node(458,type,"int"). -ast_node(458,level,7). -ast_node(458,value,21). -ast_node(459,type,"str"). -ast_node(459,level,7). -ast_node(459,value,"color.lp"). -ast_node(460,type,"int"). -ast_node(460,level,7). -ast_node(460,value,4). -ast_node(461,type,"str"). -ast_node(461,level,5). -ast_node(461,value,"edge"). -ast_node(462,type,"ASTSequence"). -ast_node(462,level,5). -ast_node(463,type,"AST"). -ast_node(463,level,6). -ast_node(463,variant,"SymbolicTerm"). -ast_node(463,value,"3"). -ast_node(464,type,"Location"). -ast_node(464,level,7). -ast_node(465,type,"Position"). -ast_node(465,level,8). -ast_node(466,type,"int"). -ast_node(466,level,9). -ast_node(466,value,17). -ast_node(467,type,"str"). -ast_node(467,level,9). -ast_node(467,value,"color.lp"). -ast_node(468,type,"int"). -ast_node(468,level,9). -ast_node(468,value,4). -ast_node(469,type,"Position"). -ast_node(469,level,8). -ast_node(470,type,"int"). -ast_node(470,level,9). -ast_node(470,value,18). -ast_node(471,type,"str"). -ast_node(471,level,9). -ast_node(471,value,"color.lp"). -ast_node(472,type,"int"). -ast_node(472,level,9). -ast_node(472,value,4). -ast_node(473,type,"Symbol"). -ast_node(473,level,7). -ast_node(473,value,"3"). -ast_node(474,type,"AST"). -ast_node(474,level,6). -ast_node(474,variant,"SymbolicTerm"). -ast_node(474,value,"4"). -ast_node(475,type,"Location"). -ast_node(475,level,7). -ast_node(476,type,"Position"). -ast_node(476,level,8). -ast_node(477,type,"int"). -ast_node(477,level,9). -ast_node(477,value,19). -ast_node(478,type,"str"). -ast_node(478,level,9). -ast_node(478,value,"color.lp"). -ast_node(479,type,"int"). -ast_node(479,level,9). -ast_node(479,value,4). -ast_node(480,type,"Position"). -ast_node(480,level,8). -ast_node(481,type,"int"). -ast_node(481,level,9). -ast_node(481,value,20). -ast_node(482,type,"str"). -ast_node(482,level,9). -ast_node(482,value,"color.lp"). -ast_node(483,type,"int"). -ast_node(483,level,9). -ast_node(483,value,4). -ast_node(484,type,"Symbol"). -ast_node(484,level,7). -ast_node(484,value,"4"). -ast_node(485,type,"int"). -ast_node(485,level,5). -ast_node(485,value,0). -ast_node(486,type,"ASTSequence"). -ast_node(486,level,2). -ast_node(487,type,"AST"). -ast_node(487,level,1). -ast_node(487,variant,"Rule"). -ast_node(487,value,"edge(3,5)."). -ast_node(488,type,"Location"). -ast_node(488,level,2). -ast_node(489,type,"Position"). -ast_node(489,level,3). -ast_node(490,type,"int"). -ast_node(490,level,4). -ast_node(490,value,23). -ast_node(491,type,"str"). -ast_node(491,level,4). -ast_node(491,value,"color.lp"). -ast_node(492,type,"int"). -ast_node(492,level,4). -ast_node(492,value,4). -ast_node(493,type,"Position"). -ast_node(493,level,3). -ast_node(494,type,"int"). -ast_node(494,level,4). -ast_node(494,value,33). -ast_node(495,type,"str"). -ast_node(495,level,4). -ast_node(495,value,"color.lp"). -ast_node(496,type,"int"). -ast_node(496,level,4). -ast_node(496,value,4). -ast_node(497,type,"AST"). -ast_node(497,level,2). -ast_node(497,variant,"Literal"). -ast_node(497,value,"edge(3,5)"). -ast_node(498,type,"Location"). -ast_node(498,level,3). -ast_node(499,type,"Position"). -ast_node(499,level,4). -ast_node(500,type,"int"). -ast_node(500,level,5). -ast_node(500,value,23). -ast_node(501,type,"str"). -ast_node(501,level,5). -ast_node(501,value,"color.lp"). -ast_node(502,type,"int"). -ast_node(502,level,5). -ast_node(502,value,4). -ast_node(503,type,"Position"). -ast_node(503,level,4). -ast_node(504,type,"int"). -ast_node(504,level,5). -ast_node(504,value,32). -ast_node(505,type,"str"). -ast_node(505,level,5). -ast_node(505,value,"color.lp"). -ast_node(506,type,"int"). -ast_node(506,level,5). -ast_node(506,value,4). -ast_node(507,type,"int"). -ast_node(507,level,3). -ast_node(507,value,0). -ast_node(508,type,"AST"). -ast_node(508,level,3). -ast_node(508,variant,"SymbolicAtom"). -ast_node(508,value,"edge(3,5)"). -ast_node(509,type,"AST"). -ast_node(509,level,4). -ast_node(509,variant,"Function"). -ast_node(509,value,"edge(3,5)"). -ast_node(510,type,"Location"). -ast_node(510,level,5). -ast_node(511,type,"Position"). -ast_node(511,level,6). -ast_node(512,type,"int"). -ast_node(512,level,7). -ast_node(512,value,23). -ast_node(513,type,"str"). -ast_node(513,level,7). -ast_node(513,value,"color.lp"). -ast_node(514,type,"int"). -ast_node(514,level,7). -ast_node(514,value,4). -ast_node(515,type,"Position"). -ast_node(515,level,6). -ast_node(516,type,"int"). -ast_node(516,level,7). -ast_node(516,value,32). -ast_node(517,type,"str"). -ast_node(517,level,7). -ast_node(517,value,"color.lp"). -ast_node(518,type,"int"). -ast_node(518,level,7). -ast_node(518,value,4). -ast_node(519,type,"str"). -ast_node(519,level,5). -ast_node(519,value,"edge"). -ast_node(520,type,"ASTSequence"). -ast_node(520,level,5). -ast_node(521,type,"AST"). -ast_node(521,level,6). -ast_node(521,variant,"SymbolicTerm"). -ast_node(521,value,"3"). -ast_node(522,type,"Location"). -ast_node(522,level,7). -ast_node(523,type,"Position"). -ast_node(523,level,8). -ast_node(524,type,"int"). -ast_node(524,level,9). -ast_node(524,value,28). -ast_node(525,type,"str"). -ast_node(525,level,9). -ast_node(525,value,"color.lp"). -ast_node(526,type,"int"). -ast_node(526,level,9). -ast_node(526,value,4). -ast_node(527,type,"Position"). -ast_node(527,level,8). -ast_node(528,type,"int"). -ast_node(528,level,9). -ast_node(528,value,29). -ast_node(529,type,"str"). -ast_node(529,level,9). -ast_node(529,value,"color.lp"). -ast_node(530,type,"int"). -ast_node(530,level,9). -ast_node(530,value,4). -ast_node(531,type,"Symbol"). -ast_node(531,level,7). -ast_node(531,value,"3"). -ast_node(532,type,"AST"). -ast_node(532,level,6). -ast_node(532,variant,"SymbolicTerm"). -ast_node(532,value,"5"). -ast_node(533,type,"Location"). -ast_node(533,level,7). -ast_node(534,type,"Position"). -ast_node(534,level,8). -ast_node(535,type,"int"). -ast_node(535,level,9). -ast_node(535,value,30). -ast_node(536,type,"str"). -ast_node(536,level,9). -ast_node(536,value,"color.lp"). -ast_node(537,type,"int"). -ast_node(537,level,9). -ast_node(537,value,4). -ast_node(538,type,"Position"). -ast_node(538,level,8). -ast_node(539,type,"int"). -ast_node(539,level,9). -ast_node(539,value,31). -ast_node(540,type,"str"). -ast_node(540,level,9). -ast_node(540,value,"color.lp"). -ast_node(541,type,"int"). -ast_node(541,level,9). -ast_node(541,value,4). -ast_node(542,type,"Symbol"). -ast_node(542,level,7). -ast_node(542,value,"5"). -ast_node(543,type,"int"). -ast_node(543,level,5). -ast_node(543,value,0). -ast_node(544,type,"ASTSequence"). -ast_node(544,level,2). -ast_node(545,type,"AST"). -ast_node(545,level,1). -ast_node(545,variant,"Rule"). -ast_node(545,value,"edge(5,6)."). -ast_node(546,type,"Location"). -ast_node(546,level,2). -ast_node(547,type,"Position"). -ast_node(547,level,3). -ast_node(548,type,"int"). -ast_node(548,level,4). -ast_node(548,value,34). -ast_node(549,type,"str"). -ast_node(549,level,4). -ast_node(549,value,"color.lp"). -ast_node(550,type,"int"). -ast_node(550,level,4). -ast_node(550,value,4). -ast_node(551,type,"Position"). -ast_node(551,level,3). -ast_node(552,type,"int"). -ast_node(552,level,4). -ast_node(552,value,44). -ast_node(553,type,"str"). -ast_node(553,level,4). -ast_node(553,value,"color.lp"). -ast_node(554,type,"int"). -ast_node(554,level,4). -ast_node(554,value,4). -ast_node(555,type,"AST"). -ast_node(555,level,2). -ast_node(555,variant,"Literal"). -ast_node(555,value,"edge(5,6)"). -ast_node(556,type,"Location"). -ast_node(556,level,3). -ast_node(557,type,"Position"). -ast_node(557,level,4). -ast_node(558,type,"int"). -ast_node(558,level,5). -ast_node(558,value,34). -ast_node(559,type,"str"). -ast_node(559,level,5). -ast_node(559,value,"color.lp"). -ast_node(560,type,"int"). -ast_node(560,level,5). -ast_node(560,value,4). -ast_node(561,type,"Position"). -ast_node(561,level,4). -ast_node(562,type,"int"). -ast_node(562,level,5). -ast_node(562,value,43). -ast_node(563,type,"str"). -ast_node(563,level,5). -ast_node(563,value,"color.lp"). -ast_node(564,type,"int"). -ast_node(564,level,5). -ast_node(564,value,4). -ast_node(565,type,"int"). -ast_node(565,level,3). -ast_node(565,value,0). -ast_node(566,type,"AST"). -ast_node(566,level,3). -ast_node(566,variant,"SymbolicAtom"). -ast_node(566,value,"edge(5,6)"). -ast_node(567,type,"AST"). -ast_node(567,level,4). -ast_node(567,variant,"Function"). -ast_node(567,value,"edge(5,6)"). -ast_node(568,type,"Location"). -ast_node(568,level,5). -ast_node(569,type,"Position"). -ast_node(569,level,6). -ast_node(570,type,"int"). -ast_node(570,level,7). -ast_node(570,value,34). -ast_node(571,type,"str"). -ast_node(571,level,7). -ast_node(571,value,"color.lp"). -ast_node(572,type,"int"). -ast_node(572,level,7). -ast_node(572,value,4). -ast_node(573,type,"Position"). -ast_node(573,level,6). -ast_node(574,type,"int"). -ast_node(574,level,7). -ast_node(574,value,43). -ast_node(575,type,"str"). -ast_node(575,level,7). -ast_node(575,value,"color.lp"). -ast_node(576,type,"int"). -ast_node(576,level,7). -ast_node(576,value,4). -ast_node(577,type,"str"). -ast_node(577,level,5). -ast_node(577,value,"edge"). -ast_node(578,type,"ASTSequence"). -ast_node(578,level,5). -ast_node(579,type,"AST"). -ast_node(579,level,6). -ast_node(579,variant,"SymbolicTerm"). -ast_node(579,value,"5"). -ast_node(580,type,"Location"). -ast_node(580,level,7). -ast_node(581,type,"Position"). -ast_node(581,level,8). -ast_node(582,type,"int"). -ast_node(582,level,9). -ast_node(582,value,39). -ast_node(583,type,"str"). -ast_node(583,level,9). -ast_node(583,value,"color.lp"). -ast_node(584,type,"int"). -ast_node(584,level,9). -ast_node(584,value,4). -ast_node(585,type,"Position"). -ast_node(585,level,8). -ast_node(586,type,"int"). -ast_node(586,level,9). -ast_node(586,value,40). -ast_node(587,type,"str"). -ast_node(587,level,9). -ast_node(587,value,"color.lp"). -ast_node(588,type,"int"). -ast_node(588,level,9). -ast_node(588,value,4). -ast_node(589,type,"Symbol"). -ast_node(589,level,7). -ast_node(589,value,"5"). -ast_node(590,type,"AST"). -ast_node(590,level,6). -ast_node(590,variant,"SymbolicTerm"). -ast_node(590,value,"6"). -ast_node(591,type,"Location"). -ast_node(591,level,7). -ast_node(592,type,"Position"). -ast_node(592,level,8). -ast_node(593,type,"int"). -ast_node(593,level,9). -ast_node(593,value,41). -ast_node(594,type,"str"). -ast_node(594,level,9). -ast_node(594,value,"color.lp"). -ast_node(595,type,"int"). -ast_node(595,level,9). -ast_node(595,value,4). -ast_node(596,type,"Position"). -ast_node(596,level,8). -ast_node(597,type,"int"). -ast_node(597,level,9). -ast_node(597,value,42). -ast_node(598,type,"str"). -ast_node(598,level,9). -ast_node(598,value,"color.lp"). -ast_node(599,type,"int"). -ast_node(599,level,9). -ast_node(599,value,4). -ast_node(600,type,"Symbol"). -ast_node(600,level,7). -ast_node(600,value,"6"). -ast_node(601,type,"int"). -ast_node(601,level,5). -ast_node(601,value,0). -ast_node(602,type,"ASTSequence"). -ast_node(602,level,2). -ast_node(603,type,"AST"). -ast_node(603,level,1). -ast_node(603,variant,"Rule"). -ast_node(603,value,"color(red;green;blue)."). -ast_node(604,type,"Location"). -ast_node(604,level,2). -ast_node(605,type,"Position"). -ast_node(605,level,3). -ast_node(606,type,"int"). -ast_node(606,level,4). -ast_node(606,value,1). -ast_node(607,type,"str"). -ast_node(607,level,4). -ast_node(607,value,"color.lp"). -ast_node(608,type,"int"). -ast_node(608,level,4). -ast_node(608,value,6). -ast_node(609,type,"Position"). -ast_node(609,level,3). -ast_node(610,type,"int"). -ast_node(610,level,4). -ast_node(610,value,25). -ast_node(611,type,"str"). -ast_node(611,level,4). -ast_node(611,value,"color.lp"). -ast_node(612,type,"int"). -ast_node(612,level,4). -ast_node(612,value,6). -ast_node(613,type,"AST"). -ast_node(613,level,2). -ast_node(613,variant,"Literal"). -ast_node(613,value,"color(red;green;blue)"). -ast_node(614,type,"Location"). -ast_node(614,level,3). -ast_node(615,type,"Position"). -ast_node(615,level,4). -ast_node(616,type,"int"). -ast_node(616,level,5). -ast_node(616,value,1). -ast_node(617,type,"str"). -ast_node(617,level,5). -ast_node(617,value,"color.lp"). -ast_node(618,type,"int"). -ast_node(618,level,5). -ast_node(618,value,6). -ast_node(619,type,"Position"). -ast_node(619,level,4). -ast_node(620,type,"int"). -ast_node(620,level,5). -ast_node(620,value,24). -ast_node(621,type,"str"). -ast_node(621,level,5). -ast_node(621,value,"color.lp"). -ast_node(622,type,"int"). -ast_node(622,level,5). -ast_node(622,value,6). -ast_node(623,type,"int"). -ast_node(623,level,3). -ast_node(623,value,0). -ast_node(624,type,"AST"). -ast_node(624,level,3). -ast_node(624,variant,"SymbolicAtom"). -ast_node(624,value,"color(red;green;blue)"). -ast_node(625,type,"AST"). -ast_node(625,level,4). -ast_node(625,variant,"Pool"). -ast_node(625,value,"color(red;green;blue)"). -ast_node(626,type,"Location"). -ast_node(626,level,5). -ast_node(627,type,"Position"). -ast_node(627,level,6). -ast_node(628,type,"int"). -ast_node(628,level,7). -ast_node(628,value,1). -ast_node(629,type,"str"). -ast_node(629,level,7). -ast_node(629,value,"color.lp"). -ast_node(630,type,"int"). -ast_node(630,level,7). -ast_node(630,value,6). -ast_node(631,type,"Position"). -ast_node(631,level,6). -ast_node(632,type,"int"). -ast_node(632,level,7). -ast_node(632,value,24). -ast_node(633,type,"str"). -ast_node(633,level,7). -ast_node(633,value,"color.lp"). -ast_node(634,type,"int"). -ast_node(634,level,7). -ast_node(634,value,6). -ast_node(635,type,"ASTSequence"). -ast_node(635,level,5). -ast_node(636,type,"AST"). -ast_node(636,level,6). -ast_node(636,variant,"Function"). -ast_node(636,value,"color(red)"). -ast_node(637,type,"Location"). -ast_node(637,level,7). -ast_node(638,type,"Position"). -ast_node(638,level,8). -ast_node(639,type,"int"). -ast_node(639,level,9). -ast_node(639,value,1). -ast_node(640,type,"str"). -ast_node(640,level,9). -ast_node(640,value,"color.lp"). -ast_node(641,type,"int"). -ast_node(641,level,9). -ast_node(641,value,6). -ast_node(642,type,"Position"). -ast_node(642,level,8). -ast_node(643,type,"int"). -ast_node(643,level,9). -ast_node(643,value,24). -ast_node(644,type,"str"). -ast_node(644,level,9). -ast_node(644,value,"color.lp"). -ast_node(645,type,"int"). -ast_node(645,level,9). -ast_node(645,value,6). -ast_node(646,type,"str"). -ast_node(646,level,7). -ast_node(646,value,"color"). -ast_node(647,type,"ASTSequence"). -ast_node(647,level,7). -ast_node(648,type,"AST"). -ast_node(648,level,8). -ast_node(648,variant,"SymbolicTerm"). -ast_node(648,value,"red"). -ast_node(649,type,"Location"). -ast_node(649,level,9). -ast_node(650,type,"Position"). -ast_node(650,level,10). -ast_node(651,type,"int"). -ast_node(651,level,11). -ast_node(651,value,7). -ast_node(652,type,"str"). -ast_node(652,level,11). -ast_node(652,value,"color.lp"). -ast_node(653,type,"int"). -ast_node(653,level,11). -ast_node(653,value,6). -ast_node(654,type,"Position"). -ast_node(654,level,10). -ast_node(655,type,"int"). -ast_node(655,level,11). -ast_node(655,value,10). -ast_node(656,type,"str"). -ast_node(656,level,11). -ast_node(656,value,"color.lp"). -ast_node(657,type,"int"). -ast_node(657,level,11). -ast_node(657,value,6). -ast_node(658,type,"Symbol"). -ast_node(658,level,9). -ast_node(658,value,"red"). -ast_node(659,type,"int"). -ast_node(659,level,7). -ast_node(659,value,0). -ast_node(660,type,"AST"). -ast_node(660,level,6). -ast_node(660,variant,"Function"). -ast_node(660,value,"color(green)"). -ast_node(661,type,"Location"). -ast_node(661,level,7). -ast_node(662,type,"Position"). -ast_node(662,level,8). -ast_node(663,type,"int"). -ast_node(663,level,9). -ast_node(663,value,1). -ast_node(664,type,"str"). -ast_node(664,level,9). -ast_node(664,value,"color.lp"). -ast_node(665,type,"int"). -ast_node(665,level,9). -ast_node(665,value,6). -ast_node(666,type,"Position"). -ast_node(666,level,8). -ast_node(667,type,"int"). -ast_node(667,level,9). -ast_node(667,value,24). -ast_node(668,type,"str"). -ast_node(668,level,9). -ast_node(668,value,"color.lp"). -ast_node(669,type,"int"). -ast_node(669,level,9). -ast_node(669,value,6). -ast_node(670,type,"str"). -ast_node(670,level,7). -ast_node(670,value,"color"). -ast_node(671,type,"ASTSequence"). -ast_node(671,level,7). -ast_node(672,type,"AST"). -ast_node(672,level,8). -ast_node(672,variant,"SymbolicTerm"). -ast_node(672,value,"green"). -ast_node(673,type,"Location"). -ast_node(673,level,9). -ast_node(674,type,"Position"). -ast_node(674,level,10). -ast_node(675,type,"int"). -ast_node(675,level,11). -ast_node(675,value,12). -ast_node(676,type,"str"). -ast_node(676,level,11). -ast_node(676,value,"color.lp"). -ast_node(677,type,"int"). -ast_node(677,level,11). -ast_node(677,value,6). -ast_node(678,type,"Position"). -ast_node(678,level,10). -ast_node(679,type,"int"). -ast_node(679,level,11). -ast_node(679,value,17). -ast_node(680,type,"str"). -ast_node(680,level,11). -ast_node(680,value,"color.lp"). -ast_node(681,type,"int"). -ast_node(681,level,11). -ast_node(681,value,6). -ast_node(682,type,"Symbol"). -ast_node(682,level,9). -ast_node(682,value,"green"). -ast_node(683,type,"int"). -ast_node(683,level,7). -ast_node(683,value,0). -ast_node(684,type,"AST"). -ast_node(684,level,6). -ast_node(684,variant,"Function"). -ast_node(684,value,"color(blue)"). -ast_node(685,type,"Location"). -ast_node(685,level,7). -ast_node(686,type,"Position"). -ast_node(686,level,8). -ast_node(687,type,"int"). -ast_node(687,level,9). -ast_node(687,value,1). -ast_node(688,type,"str"). -ast_node(688,level,9). -ast_node(688,value,"color.lp"). -ast_node(689,type,"int"). -ast_node(689,level,9). -ast_node(689,value,6). -ast_node(690,type,"Position"). -ast_node(690,level,8). -ast_node(691,type,"int"). -ast_node(691,level,9). -ast_node(691,value,24). -ast_node(692,type,"str"). -ast_node(692,level,9). -ast_node(692,value,"color.lp"). -ast_node(693,type,"int"). -ast_node(693,level,9). -ast_node(693,value,6). -ast_node(694,type,"str"). -ast_node(694,level,7). -ast_node(694,value,"color"). -ast_node(695,type,"ASTSequence"). -ast_node(695,level,7). -ast_node(696,type,"AST"). -ast_node(696,level,8). -ast_node(696,variant,"SymbolicTerm"). -ast_node(696,value,"blue"). -ast_node(697,type,"Location"). -ast_node(697,level,9). -ast_node(698,type,"Position"). -ast_node(698,level,10). -ast_node(699,type,"int"). -ast_node(699,level,11). -ast_node(699,value,19). -ast_node(700,type,"str"). -ast_node(700,level,11). -ast_node(700,value,"color.lp"). -ast_node(701,type,"int"). -ast_node(701,level,11). -ast_node(701,value,6). -ast_node(702,type,"Position"). -ast_node(702,level,10). -ast_node(703,type,"int"). -ast_node(703,level,11). -ast_node(703,value,23). -ast_node(704,type,"str"). -ast_node(704,level,11). -ast_node(704,value,"color.lp"). -ast_node(705,type,"int"). -ast_node(705,level,11). -ast_node(705,value,6). -ast_node(706,type,"Symbol"). -ast_node(706,level,9). -ast_node(706,value,"blue"). -ast_node(707,type,"int"). -ast_node(707,level,7). -ast_node(707,value,0). -ast_node(708,type,"ASTSequence"). -ast_node(708,level,2). -ast_node(709,type,"AST"). -ast_node(709,level,1). -ast_node(709,variant,"Rule"). -ast_node(709,value,"1 = { assign(N,C): color(C) } :- node(N)."). -ast_node(710,type,"Location"). -ast_node(710,level,2). -ast_node(711,type,"Position"). -ast_node(711,level,3). -ast_node(712,type,"int"). -ast_node(712,level,4). -ast_node(712,value,1). -ast_node(713,type,"str"). -ast_node(713,level,4). -ast_node(713,value,"color.lp"). -ast_node(714,type,"int"). -ast_node(714,level,4). -ast_node(714,value,8). -ast_node(715,type,"Position"). -ast_node(715,level,3). -ast_node(716,type,"int"). -ast_node(716,level,4). -ast_node(716,value,44). -ast_node(717,type,"str"). -ast_node(717,level,4). -ast_node(717,value,"color.lp"). -ast_node(718,type,"int"). -ast_node(718,level,4). -ast_node(718,value,8). -ast_node(719,type,"AST"). -ast_node(719,level,2). -ast_node(719,variant,"Aggregate"). -ast_node(719,value,"1 = { assign(N,C): color(C) }"). -ast_node(720,type,"Location"). -ast_node(720,level,3). -ast_node(721,type,"Position"). -ast_node(721,level,4). -ast_node(722,type,"int"). -ast_node(722,level,5). -ast_node(722,value,1). -ast_node(723,type,"str"). -ast_node(723,level,5). -ast_node(723,value,"color.lp"). -ast_node(724,type,"int"). -ast_node(724,level,5). -ast_node(724,value,8). -ast_node(725,type,"Position"). -ast_node(725,level,4). -ast_node(726,type,"int"). -ast_node(726,level,5). -ast_node(726,value,32). -ast_node(727,type,"str"). -ast_node(727,level,5). -ast_node(727,value,"color.lp"). -ast_node(728,type,"int"). -ast_node(728,level,5). -ast_node(728,value,8). -ast_node(729,type,"AST"). -ast_node(729,level,3). -ast_node(729,variant,"Guard"). -ast_node(729,value," = 1"). -ast_node(730,type,"int"). -ast_node(730,level,4). -ast_node(730,value,5). -ast_node(731,type,"AST"). -ast_node(731,level,4). -ast_node(731,variant,"SymbolicTerm"). -ast_node(731,value,"1"). -ast_node(732,type,"Location"). -ast_node(732,level,5). -ast_node(733,type,"Position"). -ast_node(733,level,6). -ast_node(734,type,"int"). -ast_node(734,level,7). -ast_node(734,value,31). -ast_node(735,type,"str"). -ast_node(735,level,7). -ast_node(735,value,"color.lp"). -ast_node(736,type,"int"). -ast_node(736,level,7). -ast_node(736,value,8). -ast_node(737,type,"Position"). -ast_node(737,level,6). -ast_node(738,type,"int"). -ast_node(738,level,7). -ast_node(738,value,32). -ast_node(739,type,"str"). -ast_node(739,level,7). -ast_node(739,value,"color.lp"). -ast_node(740,type,"int"). -ast_node(740,level,7). -ast_node(740,value,8). -ast_node(741,type,"Symbol"). -ast_node(741,level,5). -ast_node(741,value,"1"). -ast_node(742,type,"ASTSequence"). -ast_node(742,level,3). -ast_node(743,type,"AST"). -ast_node(743,level,4). -ast_node(743,variant,"ConditionalLiteral"). -ast_node(743,value,"assign(N,C): color(C)"). -ast_node(744,type,"Location"). -ast_node(744,level,5). -ast_node(745,type,"Position"). -ast_node(745,level,6). -ast_node(746,type,"int"). -ast_node(746,level,7). -ast_node(746,value,3). -ast_node(747,type,"str"). -ast_node(747,level,7). -ast_node(747,value,"color.lp"). -ast_node(748,type,"int"). -ast_node(748,level,7). -ast_node(748,value,8). -ast_node(749,type,"Position"). -ast_node(749,level,6). -ast_node(750,type,"int"). -ast_node(750,level,7). -ast_node(750,value,15). -ast_node(751,type,"str"). -ast_node(751,level,7). -ast_node(751,value,"color.lp"). -ast_node(752,type,"int"). -ast_node(752,level,7). -ast_node(752,value,8). -ast_node(753,type,"AST"). -ast_node(753,level,5). -ast_node(753,variant,"Literal"). -ast_node(753,value,"assign(N,C)"). -ast_node(754,type,"Location"). -ast_node(754,level,6). -ast_node(755,type,"Position"). -ast_node(755,level,7). -ast_node(756,type,"int"). -ast_node(756,level,8). -ast_node(756,value,3). -ast_node(757,type,"str"). -ast_node(757,level,8). -ast_node(757,value,"color.lp"). -ast_node(758,type,"int"). -ast_node(758,level,8). -ast_node(758,value,8). -ast_node(759,type,"Position"). -ast_node(759,level,7). -ast_node(760,type,"int"). -ast_node(760,level,8). -ast_node(760,value,15). -ast_node(761,type,"str"). -ast_node(761,level,8). -ast_node(761,value,"color.lp"). -ast_node(762,type,"int"). -ast_node(762,level,8). -ast_node(762,value,8). -ast_node(763,type,"int"). -ast_node(763,level,6). -ast_node(763,value,0). -ast_node(764,type,"AST"). -ast_node(764,level,6). -ast_node(764,variant,"SymbolicAtom"). -ast_node(764,value,"assign(N,C)"). -ast_node(765,type,"AST"). -ast_node(765,level,7). -ast_node(765,variant,"Function"). -ast_node(765,value,"assign(N,C)"). -ast_node(766,type,"Location"). -ast_node(766,level,8). -ast_node(767,type,"Position"). -ast_node(767,level,9). -ast_node(768,type,"int"). -ast_node(768,level,10). -ast_node(768,value,3). -ast_node(769,type,"str"). -ast_node(769,level,10). -ast_node(769,value,"color.lp"). -ast_node(770,type,"int"). -ast_node(770,level,10). -ast_node(770,value,8). -ast_node(771,type,"Position"). -ast_node(771,level,9). -ast_node(772,type,"int"). -ast_node(772,level,10). -ast_node(772,value,15). -ast_node(773,type,"str"). -ast_node(773,level,10). -ast_node(773,value,"color.lp"). -ast_node(774,type,"int"). -ast_node(774,level,10). -ast_node(774,value,8). -ast_node(775,type,"str"). -ast_node(775,level,8). -ast_node(775,value,"assign"). -ast_node(776,type,"ASTSequence"). -ast_node(776,level,8). -ast_node(777,type,"AST"). -ast_node(777,level,9). -ast_node(777,variant,"Variable"). -ast_node(777,value,"N"). -ast_node(778,type,"Location"). -ast_node(778,level,10). -ast_node(779,type,"Position"). -ast_node(779,level,11). -ast_node(780,type,"int"). -ast_node(780,level,12). -ast_node(780,value,10). -ast_node(781,type,"str"). -ast_node(781,level,12). -ast_node(781,value,"color.lp"). -ast_node(782,type,"int"). -ast_node(782,level,12). -ast_node(782,value,8). -ast_node(783,type,"Position"). -ast_node(783,level,11). -ast_node(784,type,"int"). -ast_node(784,level,12). -ast_node(784,value,11). -ast_node(785,type,"str"). -ast_node(785,level,12). -ast_node(785,value,"color.lp"). -ast_node(786,type,"int"). -ast_node(786,level,12). -ast_node(786,value,8). -ast_node(787,type,"str"). -ast_node(787,level,10). -ast_node(787,value,"N"). -ast_node(788,type,"AST"). -ast_node(788,level,9). -ast_node(788,variant,"Variable"). -ast_node(788,value,"C"). -ast_node(789,type,"Location"). -ast_node(789,level,10). -ast_node(790,type,"Position"). -ast_node(790,level,11). -ast_node(791,type,"int"). -ast_node(791,level,12). -ast_node(791,value,13). -ast_node(792,type,"str"). -ast_node(792,level,12). -ast_node(792,value,"color.lp"). -ast_node(793,type,"int"). -ast_node(793,level,12). -ast_node(793,value,8). -ast_node(794,type,"Position"). -ast_node(794,level,11). -ast_node(795,type,"int"). -ast_node(795,level,12). -ast_node(795,value,14). -ast_node(796,type,"str"). -ast_node(796,level,12). -ast_node(796,value,"color.lp"). -ast_node(797,type,"int"). -ast_node(797,level,12). -ast_node(797,value,8). -ast_node(798,type,"str"). -ast_node(798,level,10). -ast_node(798,value,"C"). -ast_node(799,type,"int"). -ast_node(799,level,8). -ast_node(799,value,0). -ast_node(800,type,"ASTSequence"). -ast_node(800,level,5). -ast_node(801,type,"AST"). -ast_node(801,level,6). -ast_node(801,variant,"Literal"). -ast_node(801,value,"color(C)"). -ast_node(802,type,"Location"). -ast_node(802,level,7). -ast_node(803,type,"Position"). -ast_node(803,level,8). -ast_node(804,type,"int"). -ast_node(804,level,9). -ast_node(804,value,18). -ast_node(805,type,"str"). -ast_node(805,level,9). -ast_node(805,value,"color.lp"). -ast_node(806,type,"int"). -ast_node(806,level,9). -ast_node(806,value,8). -ast_node(807,type,"Position"). -ast_node(807,level,8). -ast_node(808,type,"int"). -ast_node(808,level,9). -ast_node(808,value,26). -ast_node(809,type,"str"). -ast_node(809,level,9). -ast_node(809,value,"color.lp"). -ast_node(810,type,"int"). -ast_node(810,level,9). -ast_node(810,value,8). -ast_node(811,type,"int"). -ast_node(811,level,7). -ast_node(811,value,0). -ast_node(812,type,"AST"). -ast_node(812,level,7). -ast_node(812,variant,"SymbolicAtom"). -ast_node(812,value,"color(C)"). -ast_node(813,type,"AST"). -ast_node(813,level,8). -ast_node(813,variant,"Function"). -ast_node(813,value,"color(C)"). -ast_node(814,type,"Location"). -ast_node(814,level,9). -ast_node(815,type,"Position"). -ast_node(815,level,10). -ast_node(816,type,"int"). -ast_node(816,level,11). -ast_node(816,value,18). -ast_node(817,type,"str"). -ast_node(817,level,11). -ast_node(817,value,"color.lp"). -ast_node(818,type,"int"). -ast_node(818,level,11). -ast_node(818,value,8). -ast_node(819,type,"Position"). -ast_node(819,level,10). -ast_node(820,type,"int"). -ast_node(820,level,11). -ast_node(820,value,26). -ast_node(821,type,"str"). -ast_node(821,level,11). -ast_node(821,value,"color.lp"). -ast_node(822,type,"int"). -ast_node(822,level,11). -ast_node(822,value,8). -ast_node(823,type,"str"). -ast_node(823,level,9). -ast_node(823,value,"color"). -ast_node(824,type,"ASTSequence"). -ast_node(824,level,9). -ast_node(825,type,"AST"). -ast_node(825,level,10). -ast_node(825,variant,"Variable"). -ast_node(825,value,"C"). -ast_node(826,type,"Location"). -ast_node(826,level,11). -ast_node(827,type,"Position"). -ast_node(827,level,12). -ast_node(828,type,"int"). -ast_node(828,level,13). -ast_node(828,value,24). -ast_node(829,type,"str"). -ast_node(829,level,13). -ast_node(829,value,"color.lp"). -ast_node(830,type,"int"). -ast_node(830,level,13). -ast_node(830,value,8). -ast_node(831,type,"Position"). -ast_node(831,level,12). -ast_node(832,type,"int"). -ast_node(832,level,13). -ast_node(832,value,25). -ast_node(833,type,"str"). -ast_node(833,level,13). -ast_node(833,value,"color.lp"). -ast_node(834,type,"int"). -ast_node(834,level,13). -ast_node(834,value,8). -ast_node(835,type,"str"). -ast_node(835,level,11). -ast_node(835,value,"C"). -ast_node(836,type,"int"). -ast_node(836,level,9). -ast_node(836,value,0). -ast_node(837,type,"None"). -ast_node(837,level,3). -ast_node(838,type,"ASTSequence"). -ast_node(838,level,2). -ast_node(839,type,"AST"). -ast_node(839,level,3). -ast_node(839,variant,"Literal"). -ast_node(839,value,"node(N)"). -ast_node(840,type,"Location"). -ast_node(840,level,4). -ast_node(841,type,"Position"). -ast_node(841,level,5). -ast_node(842,type,"int"). -ast_node(842,level,6). -ast_node(842,value,36). -ast_node(843,type,"str"). -ast_node(843,level,6). -ast_node(843,value,"color.lp"). -ast_node(844,type,"int"). -ast_node(844,level,6). -ast_node(844,value,8). -ast_node(845,type,"Position"). -ast_node(845,level,5). -ast_node(846,type,"int"). -ast_node(846,level,6). -ast_node(846,value,43). -ast_node(847,type,"str"). -ast_node(847,level,6). -ast_node(847,value,"color.lp"). -ast_node(848,type,"int"). -ast_node(848,level,6). -ast_node(848,value,8). -ast_node(849,type,"int"). -ast_node(849,level,4). -ast_node(849,value,0). -ast_node(850,type,"AST"). -ast_node(850,level,4). -ast_node(850,variant,"SymbolicAtom"). -ast_node(850,value,"node(N)"). -ast_node(851,type,"AST"). -ast_node(851,level,5). -ast_node(851,variant,"Function"). -ast_node(851,value,"node(N)"). -ast_node(852,type,"Location"). -ast_node(852,level,6). -ast_node(853,type,"Position"). -ast_node(853,level,7). -ast_node(854,type,"int"). -ast_node(854,level,8). -ast_node(854,value,36). -ast_node(855,type,"str"). -ast_node(855,level,8). -ast_node(855,value,"color.lp"). -ast_node(856,type,"int"). -ast_node(856,level,8). -ast_node(856,value,8). -ast_node(857,type,"Position"). -ast_node(857,level,7). -ast_node(858,type,"int"). -ast_node(858,level,8). -ast_node(858,value,43). -ast_node(859,type,"str"). -ast_node(859,level,8). -ast_node(859,value,"color.lp"). -ast_node(860,type,"int"). -ast_node(860,level,8). -ast_node(860,value,8). -ast_node(861,type,"str"). -ast_node(861,level,6). -ast_node(861,value,"node"). -ast_node(862,type,"ASTSequence"). -ast_node(862,level,6). -ast_node(863,type,"AST"). -ast_node(863,level,7). -ast_node(863,variant,"Variable"). -ast_node(863,value,"N"). -ast_node(864,type,"Location"). -ast_node(864,level,8). -ast_node(865,type,"Position"). -ast_node(865,level,9). -ast_node(866,type,"int"). -ast_node(866,level,10). -ast_node(866,value,41). -ast_node(867,type,"str"). -ast_node(867,level,10). -ast_node(867,value,"color.lp"). -ast_node(868,type,"int"). -ast_node(868,level,10). -ast_node(868,value,8). -ast_node(869,type,"Position"). -ast_node(869,level,9). -ast_node(870,type,"int"). -ast_node(870,level,10). -ast_node(870,value,42). -ast_node(871,type,"str"). -ast_node(871,level,10). -ast_node(871,value,"color.lp"). -ast_node(872,type,"int"). -ast_node(872,level,10). -ast_node(872,value,8). -ast_node(873,type,"str"). -ast_node(873,level,8). -ast_node(873,value,"N"). -ast_node(874,type,"int"). -ast_node(874,level,6). -ast_node(874,value,0). -ast_node(875,type,"AST"). -ast_node(875,level,1). -ast_node(875,variant,"Rule"). -ast_node(875,value,"#false :- edge((N,M)); assign(N,C); assign(M,C)."). -ast_node(876,type,"Location"). -ast_node(876,level,2). -ast_node(877,type,"Position"). -ast_node(877,level,3). -ast_node(878,type,"int"). -ast_node(878,level,4). -ast_node(878,value,1). -ast_node(879,type,"str"). -ast_node(879,level,4). -ast_node(879,value,"color.lp"). -ast_node(880,type,"int"). -ast_node(880,level,4). -ast_node(880,value,9). -ast_node(881,type,"Position"). -ast_node(881,level,3). -ast_node(882,type,"int"). -ast_node(882,level,4). -ast_node(882,value,45). -ast_node(883,type,"str"). -ast_node(883,level,4). -ast_node(883,value,"color.lp"). -ast_node(884,type,"int"). -ast_node(884,level,4). -ast_node(884,value,9). -ast_node(885,type,"AST"). -ast_node(885,level,2). -ast_node(885,variant,"Literal"). -ast_node(885,value,"#false"). -ast_node(886,type,"Location"). -ast_node(886,level,3). -ast_node(887,type,"Position"). -ast_node(887,level,4). -ast_node(888,type,"int"). -ast_node(888,level,5). -ast_node(888,value,1). -ast_node(889,type,"str"). -ast_node(889,level,5). -ast_node(889,value,"color.lp"). -ast_node(890,type,"int"). -ast_node(890,level,5). -ast_node(890,value,9). -ast_node(891,type,"Position"). -ast_node(891,level,4). -ast_node(892,type,"int"). -ast_node(892,level,5). -ast_node(892,value,45). -ast_node(893,type,"str"). -ast_node(893,level,5). -ast_node(893,value,"color.lp"). -ast_node(894,type,"int"). -ast_node(894,level,5). -ast_node(894,value,9). -ast_node(895,type,"int"). -ast_node(895,level,3). -ast_node(895,value,0). -ast_node(896,type,"AST"). -ast_node(896,level,3). -ast_node(896,variant,"BooleanConstant"). -ast_node(896,value,"#false"). -ast_node(897,type,"int"). -ast_node(897,level,4). -ast_node(897,value,0). -ast_node(898,type,"ASTSequence"). -ast_node(898,level,2). -ast_node(899,type,"AST"). -ast_node(899,level,3). -ast_node(899,variant,"Literal"). -ast_node(899,value,"edge((N,M))"). -ast_node(900,type,"Location"). -ast_node(900,level,4). -ast_node(901,type,"Position"). -ast_node(901,level,5). -ast_node(902,type,"int"). -ast_node(902,level,6). -ast_node(902,value,4). -ast_node(903,type,"str"). -ast_node(903,level,6). -ast_node(903,value,"color.lp"). -ast_node(904,type,"int"). -ast_node(904,level,6). -ast_node(904,value,9). -ast_node(905,type,"Position"). -ast_node(905,level,5). -ast_node(906,type,"int"). -ast_node(906,level,6). -ast_node(906,value,16). -ast_node(907,type,"str"). -ast_node(907,level,6). -ast_node(907,value,"color.lp"). -ast_node(908,type,"int"). -ast_node(908,level,6). -ast_node(908,value,9). -ast_node(909,type,"int"). -ast_node(909,level,4). -ast_node(909,value,0). -ast_node(910,type,"AST"). -ast_node(910,level,4). -ast_node(910,variant,"SymbolicAtom"). -ast_node(910,value,"edge((N,M))"). -ast_node(911,type,"AST"). -ast_node(911,level,5). -ast_node(911,variant,"Function"). -ast_node(911,value,"edge((N,M))"). -ast_node(912,type,"Location"). -ast_node(912,level,6). -ast_node(913,type,"Position"). -ast_node(913,level,7). -ast_node(914,type,"int"). -ast_node(914,level,8). -ast_node(914,value,4). -ast_node(915,type,"str"). -ast_node(915,level,8). -ast_node(915,value,"color.lp"). -ast_node(916,type,"int"). -ast_node(916,level,8). -ast_node(916,value,9). -ast_node(917,type,"Position"). -ast_node(917,level,7). -ast_node(918,type,"int"). -ast_node(918,level,8). -ast_node(918,value,16). -ast_node(919,type,"str"). -ast_node(919,level,8). -ast_node(919,value,"color.lp"). -ast_node(920,type,"int"). -ast_node(920,level,8). -ast_node(920,value,9). -ast_node(921,type,"str"). -ast_node(921,level,6). -ast_node(921,value,"edge"). -ast_node(922,type,"ASTSequence"). -ast_node(922,level,6). -ast_node(923,type,"AST"). -ast_node(923,level,7). -ast_node(923,variant,"Function"). -ast_node(923,value,"(N,M)"). -ast_node(924,type,"Location"). -ast_node(924,level,8). -ast_node(925,type,"Position"). -ast_node(925,level,9). -ast_node(926,type,"int"). -ast_node(926,level,10). -ast_node(926,value,10). -ast_node(927,type,"str"). -ast_node(927,level,10). -ast_node(927,value,"color.lp"). -ast_node(928,type,"int"). -ast_node(928,level,10). -ast_node(928,value,9). -ast_node(929,type,"Position"). -ast_node(929,level,9). -ast_node(930,type,"int"). -ast_node(930,level,10). -ast_node(930,value,14). -ast_node(931,type,"str"). -ast_node(931,level,10). -ast_node(931,value,"color.lp"). -ast_node(932,type,"int"). -ast_node(932,level,10). -ast_node(932,value,9). -ast_node(933,type,"str"). -ast_node(933,level,8). -ast_node(933,value,""). -ast_node(934,type,"ASTSequence"). -ast_node(934,level,8). -ast_node(935,type,"AST"). -ast_node(935,level,9). -ast_node(935,variant,"Variable"). -ast_node(935,value,"N"). -ast_node(936,type,"Location"). -ast_node(936,level,10). -ast_node(937,type,"Position"). -ast_node(937,level,11). -ast_node(938,type,"int"). -ast_node(938,level,12). -ast_node(938,value,10). -ast_node(939,type,"str"). -ast_node(939,level,12). -ast_node(939,value,"color.lp"). -ast_node(940,type,"int"). -ast_node(940,level,12). -ast_node(940,value,9). -ast_node(941,type,"Position"). -ast_node(941,level,11). -ast_node(942,type,"int"). -ast_node(942,level,12). -ast_node(942,value,11). -ast_node(943,type,"str"). -ast_node(943,level,12). -ast_node(943,value,"color.lp"). -ast_node(944,type,"int"). -ast_node(944,level,12). -ast_node(944,value,9). -ast_node(945,type,"str"). -ast_node(945,level,10). -ast_node(945,value,"N"). -ast_node(946,type,"AST"). -ast_node(946,level,9). -ast_node(946,variant,"Variable"). -ast_node(946,value,"M"). -ast_node(947,type,"Location"). -ast_node(947,level,10). -ast_node(948,type,"Position"). -ast_node(948,level,11). -ast_node(949,type,"int"). -ast_node(949,level,12). -ast_node(949,value,13). -ast_node(950,type,"str"). -ast_node(950,level,12). -ast_node(950,value,"color.lp"). -ast_node(951,type,"int"). -ast_node(951,level,12). -ast_node(951,value,9). -ast_node(952,type,"Position"). -ast_node(952,level,11). -ast_node(953,type,"int"). -ast_node(953,level,12). -ast_node(953,value,14). -ast_node(954,type,"str"). -ast_node(954,level,12). -ast_node(954,value,"color.lp"). -ast_node(955,type,"int"). -ast_node(955,level,12). -ast_node(955,value,9). -ast_node(956,type,"str"). -ast_node(956,level,10). -ast_node(956,value,"M"). -ast_node(957,type,"int"). -ast_node(957,level,8). -ast_node(957,value,0). -ast_node(958,type,"int"). -ast_node(958,level,6). -ast_node(958,value,0). -ast_node(959,type,"AST"). -ast_node(959,level,3). -ast_node(959,variant,"Literal"). -ast_node(959,value,"assign(N,C)"). -ast_node(960,type,"Location"). -ast_node(960,level,4). -ast_node(961,type,"Position"). -ast_node(961,level,5). -ast_node(962,type,"int"). -ast_node(962,level,6). -ast_node(962,value,18). -ast_node(963,type,"str"). -ast_node(963,level,6). -ast_node(963,value,"color.lp"). -ast_node(964,type,"int"). -ast_node(964,level,6). -ast_node(964,value,9). -ast_node(965,type,"Position"). -ast_node(965,level,5). -ast_node(966,type,"int"). -ast_node(966,level,6). -ast_node(966,value,30). -ast_node(967,type,"str"). -ast_node(967,level,6). -ast_node(967,value,"color.lp"). -ast_node(968,type,"int"). -ast_node(968,level,6). -ast_node(968,value,9). -ast_node(969,type,"int"). -ast_node(969,level,4). -ast_node(969,value,0). -ast_node(970,type,"AST"). -ast_node(970,level,4). -ast_node(970,variant,"SymbolicAtom"). -ast_node(970,value,"assign(N,C)"). -ast_node(971,type,"AST"). -ast_node(971,level,5). -ast_node(971,variant,"Function"). -ast_node(971,value,"assign(N,C)"). -ast_node(972,type,"Location"). -ast_node(972,level,6). -ast_node(973,type,"Position"). -ast_node(973,level,7). -ast_node(974,type,"int"). -ast_node(974,level,8). -ast_node(974,value,18). -ast_node(975,type,"str"). -ast_node(975,level,8). -ast_node(975,value,"color.lp"). -ast_node(976,type,"int"). -ast_node(976,level,8). -ast_node(976,value,9). -ast_node(977,type,"Position"). -ast_node(977,level,7). -ast_node(978,type,"int"). -ast_node(978,level,8). -ast_node(978,value,30). -ast_node(979,type,"str"). -ast_node(979,level,8). -ast_node(979,value,"color.lp"). -ast_node(980,type,"int"). -ast_node(980,level,8). -ast_node(980,value,9). -ast_node(981,type,"str"). -ast_node(981,level,6). -ast_node(981,value,"assign"). -ast_node(982,type,"ASTSequence"). -ast_node(982,level,6). -ast_node(983,type,"AST"). -ast_node(983,level,7). -ast_node(983,variant,"Variable"). -ast_node(983,value,"N"). -ast_node(984,type,"Location"). -ast_node(984,level,8). -ast_node(985,type,"Position"). -ast_node(985,level,9). -ast_node(986,type,"int"). -ast_node(986,level,10). -ast_node(986,value,25). -ast_node(987,type,"str"). -ast_node(987,level,10). -ast_node(987,value,"color.lp"). -ast_node(988,type,"int"). -ast_node(988,level,10). -ast_node(988,value,9). -ast_node(989,type,"Position"). -ast_node(989,level,9). -ast_node(990,type,"int"). -ast_node(990,level,10). -ast_node(990,value,26). -ast_node(991,type,"str"). -ast_node(991,level,10). -ast_node(991,value,"color.lp"). -ast_node(992,type,"int"). -ast_node(992,level,10). -ast_node(992,value,9). -ast_node(993,type,"str"). -ast_node(993,level,8). -ast_node(993,value,"N"). -ast_node(994,type,"AST"). -ast_node(994,level,7). -ast_node(994,variant,"Variable"). -ast_node(994,value,"C"). -ast_node(995,type,"Location"). -ast_node(995,level,8). -ast_node(996,type,"Position"). -ast_node(996,level,9). -ast_node(997,type,"int"). -ast_node(997,level,10). -ast_node(997,value,28). -ast_node(998,type,"str"). -ast_node(998,level,10). -ast_node(998,value,"color.lp"). -ast_node(999,type,"int"). -ast_node(999,level,10). -ast_node(999,value,9). -ast_node(1000,type,"Position"). -ast_node(1000,level,9). -ast_node(1001,type,"int"). -ast_node(1001,level,10). -ast_node(1001,value,29). -ast_node(1002,type,"str"). -ast_node(1002,level,10). -ast_node(1002,value,"color.lp"). -ast_node(1003,type,"int"). -ast_node(1003,level,10). -ast_node(1003,value,9). -ast_node(1004,type,"str"). -ast_node(1004,level,8). -ast_node(1004,value,"C"). -ast_node(1005,type,"int"). -ast_node(1005,level,6). -ast_node(1005,value,0). -ast_node(1006,type,"AST"). -ast_node(1006,level,3). -ast_node(1006,variant,"Literal"). -ast_node(1006,value,"assign(M,C)"). -ast_node(1007,type,"Location"). -ast_node(1007,level,4). -ast_node(1008,type,"Position"). -ast_node(1008,level,5). -ast_node(1009,type,"int"). -ast_node(1009,level,6). -ast_node(1009,value,32). -ast_node(1010,type,"str"). -ast_node(1010,level,6). -ast_node(1010,value,"color.lp"). -ast_node(1011,type,"int"). -ast_node(1011,level,6). -ast_node(1011,value,9). -ast_node(1012,type,"Position"). -ast_node(1012,level,5). -ast_node(1013,type,"int"). -ast_node(1013,level,6). -ast_node(1013,value,44). -ast_node(1014,type,"str"). -ast_node(1014,level,6). -ast_node(1014,value,"color.lp"). -ast_node(1015,type,"int"). -ast_node(1015,level,6). -ast_node(1015,value,9). -ast_node(1016,type,"int"). -ast_node(1016,level,4). -ast_node(1016,value,0). -ast_node(1017,type,"AST"). -ast_node(1017,level,4). -ast_node(1017,variant,"SymbolicAtom"). -ast_node(1017,value,"assign(M,C)"). -ast_node(1018,type,"AST"). -ast_node(1018,level,5). -ast_node(1018,variant,"Function"). -ast_node(1018,value,"assign(M,C)"). -ast_node(1019,type,"Location"). -ast_node(1019,level,6). -ast_node(1020,type,"Position"). -ast_node(1020,level,7). -ast_node(1021,type,"int"). -ast_node(1021,level,8). -ast_node(1021,value,32). -ast_node(1022,type,"str"). -ast_node(1022,level,8). -ast_node(1022,value,"color.lp"). -ast_node(1023,type,"int"). -ast_node(1023,level,8). -ast_node(1023,value,9). -ast_node(1024,type,"Position"). -ast_node(1024,level,7). -ast_node(1025,type,"int"). -ast_node(1025,level,8). -ast_node(1025,value,44). -ast_node(1026,type,"str"). -ast_node(1026,level,8). -ast_node(1026,value,"color.lp"). -ast_node(1027,type,"int"). -ast_node(1027,level,8). -ast_node(1027,value,9). -ast_node(1028,type,"str"). -ast_node(1028,level,6). -ast_node(1028,value,"assign"). -ast_node(1029,type,"ASTSequence"). -ast_node(1029,level,6). -ast_node(1030,type,"AST"). -ast_node(1030,level,7). -ast_node(1030,variant,"Variable"). -ast_node(1030,value,"M"). -ast_node(1031,type,"Location"). -ast_node(1031,level,8). -ast_node(1032,type,"Position"). -ast_node(1032,level,9). -ast_node(1033,type,"int"). -ast_node(1033,level,10). -ast_node(1033,value,39). -ast_node(1034,type,"str"). -ast_node(1034,level,10). -ast_node(1034,value,"color.lp"). -ast_node(1035,type,"int"). -ast_node(1035,level,10). -ast_node(1035,value,9). -ast_node(1036,type,"Position"). -ast_node(1036,level,9). -ast_node(1037,type,"int"). -ast_node(1037,level,10). -ast_node(1037,value,40). -ast_node(1038,type,"str"). -ast_node(1038,level,10). -ast_node(1038,value,"color.lp"). -ast_node(1039,type,"int"). -ast_node(1039,level,10). -ast_node(1039,value,9). -ast_node(1040,type,"str"). -ast_node(1040,level,8). -ast_node(1040,value,"M"). -ast_node(1041,type,"AST"). -ast_node(1041,level,7). -ast_node(1041,variant,"Variable"). -ast_node(1041,value,"C"). -ast_node(1042,type,"Location"). -ast_node(1042,level,8). -ast_node(1043,type,"Position"). -ast_node(1043,level,9). -ast_node(1044,type,"int"). -ast_node(1044,level,10). -ast_node(1044,value,42). -ast_node(1045,type,"str"). -ast_node(1045,level,10). -ast_node(1045,value,"color.lp"). -ast_node(1046,type,"int"). -ast_node(1046,level,10). -ast_node(1046,value,9). -ast_node(1047,type,"Position"). -ast_node(1047,level,9). -ast_node(1048,type,"int"). -ast_node(1048,level,10). -ast_node(1048,value,43). -ast_node(1049,type,"str"). -ast_node(1049,level,10). -ast_node(1049,value,"color.lp"). -ast_node(1050,type,"int"). -ast_node(1050,level,10). -ast_node(1050,value,9). -ast_node(1051,type,"str"). -ast_node(1051,level,8). -ast_node(1051,value,"C"). -ast_node(1052,type,"int"). -ast_node(1052,level,6). -ast_node(1052,value,0). -ast_node(1053,type,"AST"). -ast_node(1053,level,1). -ast_node(1053,variant,"ShowSignature"). -ast_node(1053,value,"#show node/1."). -ast_node(1054,type,"Location"). -ast_node(1054,level,2). -ast_node(1055,type,"Position"). -ast_node(1055,level,3). -ast_node(1056,type,"int"). -ast_node(1056,level,4). -ast_node(1056,value,1). -ast_node(1057,type,"str"). -ast_node(1057,level,4). -ast_node(1057,value,"color.lp"). -ast_node(1058,type,"int"). -ast_node(1058,level,4). -ast_node(1058,value,11). -ast_node(1059,type,"Position"). -ast_node(1059,level,3). -ast_node(1060,type,"int"). -ast_node(1060,level,4). -ast_node(1060,value,14). -ast_node(1061,type,"str"). -ast_node(1061,level,4). -ast_node(1061,value,"color.lp"). -ast_node(1062,type,"int"). -ast_node(1062,level,4). -ast_node(1062,value,11). -ast_node(1063,type,"str"). -ast_node(1063,level,2). -ast_node(1063,value,"node"). -ast_node(1064,type,"int"). -ast_node(1064,level,2). -ast_node(1064,value,1). -ast_node(1065,type,"int"). -ast_node(1065,level,2). -ast_node(1065,value,1). -ast_node(1066,type,"AST"). -ast_node(1066,level,1). -ast_node(1066,variant,"ShowSignature"). -ast_node(1066,value,"#show edge/1."). -ast_node(1067,type,"Location"). -ast_node(1067,level,2). -ast_node(1068,type,"Position"). -ast_node(1068,level,3). -ast_node(1069,type,"int"). -ast_node(1069,level,4). -ast_node(1069,value,1). -ast_node(1070,type,"str"). -ast_node(1070,level,4). -ast_node(1070,value,"color.lp"). -ast_node(1071,type,"int"). -ast_node(1071,level,4). -ast_node(1071,value,12). -ast_node(1072,type,"Position"). -ast_node(1072,level,3). -ast_node(1073,type,"int"). -ast_node(1073,level,4). -ast_node(1073,value,14). -ast_node(1074,type,"str"). -ast_node(1074,level,4). -ast_node(1074,value,"color.lp"). -ast_node(1075,type,"int"). -ast_node(1075,level,4). -ast_node(1075,value,12). -ast_node(1076,type,"str"). -ast_node(1076,level,2). -ast_node(1076,value,"edge"). -ast_node(1077,type,"int"). -ast_node(1077,level,2). -ast_node(1077,value,1). -ast_node(1078,type,"int"). -ast_node(1078,level,2). -ast_node(1078,value,1). -ast_node(1079,type,"AST"). -ast_node(1079,level,1). -ast_node(1079,variant,"ShowTerm"). -ast_node(1079,value,"#show attr(node,N,style,filled) : node(N)."). -ast_node(1080,type,"Location"). -ast_node(1080,level,2). -ast_node(1081,type,"Position"). -ast_node(1081,level,3). -ast_node(1082,type,"int"). -ast_node(1082,level,4). -ast_node(1082,value,1). -ast_node(1083,type,"str"). -ast_node(1083,level,4). -ast_node(1083,value,"color.lp"). -ast_node(1084,type,"int"). -ast_node(1084,level,4). -ast_node(1084,value,13). -ast_node(1085,type,"Position"). -ast_node(1085,level,3). -ast_node(1086,type,"int"). -ast_node(1086,level,4). -ast_node(1086,value,45). -ast_node(1087,type,"str"). -ast_node(1087,level,4). -ast_node(1087,value,"color.lp"). -ast_node(1088,type,"int"). -ast_node(1088,level,4). -ast_node(1088,value,13). -ast_node(1089,type,"AST"). -ast_node(1089,level,2). -ast_node(1089,variant,"Function"). -ast_node(1089,value,"attr(node,N,style,filled)"). -ast_node(1090,type,"Location"). -ast_node(1090,level,3). -ast_node(1091,type,"Position"). -ast_node(1091,level,4). -ast_node(1092,type,"int"). -ast_node(1092,level,5). -ast_node(1092,value,7). -ast_node(1093,type,"str"). -ast_node(1093,level,5). -ast_node(1093,value,"color.lp"). -ast_node(1094,type,"int"). -ast_node(1094,level,5). -ast_node(1094,value,13). -ast_node(1095,type,"Position"). -ast_node(1095,level,4). -ast_node(1096,type,"int"). -ast_node(1096,level,5). -ast_node(1096,value,35). -ast_node(1097,type,"str"). -ast_node(1097,level,5). -ast_node(1097,value,"color.lp"). -ast_node(1098,type,"int"). -ast_node(1098,level,5). -ast_node(1098,value,13). -ast_node(1099,type,"str"). -ast_node(1099,level,3). -ast_node(1099,value,"attr"). -ast_node(1100,type,"ASTSequence"). -ast_node(1100,level,3). -ast_node(1101,type,"AST"). -ast_node(1101,level,4). -ast_node(1101,variant,"SymbolicTerm"). -ast_node(1101,value,"node"). -ast_node(1102,type,"Location"). -ast_node(1102,level,5). -ast_node(1103,type,"Position"). -ast_node(1103,level,6). -ast_node(1104,type,"int"). -ast_node(1104,level,7). -ast_node(1104,value,12). -ast_node(1105,type,"str"). -ast_node(1105,level,7). -ast_node(1105,value,"color.lp"). -ast_node(1106,type,"int"). -ast_node(1106,level,7). -ast_node(1106,value,13). -ast_node(1107,type,"Position"). -ast_node(1107,level,6). -ast_node(1108,type,"int"). -ast_node(1108,level,7). -ast_node(1108,value,16). -ast_node(1109,type,"str"). -ast_node(1109,level,7). -ast_node(1109,value,"color.lp"). -ast_node(1110,type,"int"). -ast_node(1110,level,7). -ast_node(1110,value,13). -ast_node(1111,type,"Symbol"). -ast_node(1111,level,5). -ast_node(1111,value,"node"). -ast_node(1112,type,"AST"). -ast_node(1112,level,4). -ast_node(1112,variant,"Variable"). -ast_node(1112,value,"N"). -ast_node(1113,type,"Location"). -ast_node(1113,level,5). -ast_node(1114,type,"Position"). -ast_node(1114,level,6). -ast_node(1115,type,"int"). -ast_node(1115,level,7). -ast_node(1115,value,18). -ast_node(1116,type,"str"). -ast_node(1116,level,7). -ast_node(1116,value,"color.lp"). -ast_node(1117,type,"int"). -ast_node(1117,level,7). -ast_node(1117,value,13). -ast_node(1118,type,"Position"). -ast_node(1118,level,6). -ast_node(1119,type,"int"). -ast_node(1119,level,7). -ast_node(1119,value,19). -ast_node(1120,type,"str"). -ast_node(1120,level,7). -ast_node(1120,value,"color.lp"). -ast_node(1121,type,"int"). -ast_node(1121,level,7). -ast_node(1121,value,13). -ast_node(1122,type,"str"). -ast_node(1122,level,5). -ast_node(1122,value,"N"). -ast_node(1123,type,"AST"). -ast_node(1123,level,4). -ast_node(1123,variant,"SymbolicTerm"). -ast_node(1123,value,"style"). -ast_node(1124,type,"Location"). -ast_node(1124,level,5). -ast_node(1125,type,"Position"). -ast_node(1125,level,6). -ast_node(1126,type,"int"). -ast_node(1126,level,7). -ast_node(1126,value,21). -ast_node(1127,type,"str"). -ast_node(1127,level,7). -ast_node(1127,value,"color.lp"). -ast_node(1128,type,"int"). -ast_node(1128,level,7). -ast_node(1128,value,13). -ast_node(1129,type,"Position"). -ast_node(1129,level,6). -ast_node(1130,type,"int"). -ast_node(1130,level,7). -ast_node(1130,value,26). -ast_node(1131,type,"str"). -ast_node(1131,level,7). -ast_node(1131,value,"color.lp"). -ast_node(1132,type,"int"). -ast_node(1132,level,7). -ast_node(1132,value,13). -ast_node(1133,type,"Symbol"). -ast_node(1133,level,5). -ast_node(1133,value,"style"). -ast_node(1134,type,"AST"). -ast_node(1134,level,4). -ast_node(1134,variant,"SymbolicTerm"). -ast_node(1134,value,"filled"). -ast_node(1135,type,"Location"). -ast_node(1135,level,5). -ast_node(1136,type,"Position"). -ast_node(1136,level,6). -ast_node(1137,type,"int"). -ast_node(1137,level,7). -ast_node(1137,value,28). -ast_node(1138,type,"str"). -ast_node(1138,level,7). -ast_node(1138,value,"color.lp"). -ast_node(1139,type,"int"). -ast_node(1139,level,7). -ast_node(1139,value,13). -ast_node(1140,type,"Position"). -ast_node(1140,level,6). -ast_node(1141,type,"int"). -ast_node(1141,level,7). -ast_node(1141,value,34). -ast_node(1142,type,"str"). -ast_node(1142,level,7). -ast_node(1142,value,"color.lp"). -ast_node(1143,type,"int"). -ast_node(1143,level,7). -ast_node(1143,value,13). -ast_node(1144,type,"Symbol"). -ast_node(1144,level,5). -ast_node(1144,value,"filled"). -ast_node(1145,type,"int"). -ast_node(1145,level,3). -ast_node(1145,value,0). -ast_node(1146,type,"ASTSequence"). -ast_node(1146,level,2). -ast_node(1147,type,"AST"). -ast_node(1147,level,3). -ast_node(1147,variant,"Literal"). -ast_node(1147,value,"node(N)"). -ast_node(1148,type,"Location"). -ast_node(1148,level,4). -ast_node(1149,type,"Position"). -ast_node(1149,level,5). -ast_node(1150,type,"int"). -ast_node(1150,level,6). -ast_node(1150,value,37). -ast_node(1151,type,"str"). -ast_node(1151,level,6). -ast_node(1151,value,"color.lp"). -ast_node(1152,type,"int"). -ast_node(1152,level,6). -ast_node(1152,value,13). -ast_node(1153,type,"Position"). -ast_node(1153,level,5). -ast_node(1154,type,"int"). -ast_node(1154,level,6). -ast_node(1154,value,44). -ast_node(1155,type,"str"). -ast_node(1155,level,6). -ast_node(1155,value,"color.lp"). -ast_node(1156,type,"int"). -ast_node(1156,level,6). -ast_node(1156,value,13). -ast_node(1157,type,"int"). -ast_node(1157,level,4). -ast_node(1157,value,0). -ast_node(1158,type,"AST"). -ast_node(1158,level,4). -ast_node(1158,variant,"SymbolicAtom"). -ast_node(1158,value,"node(N)"). -ast_node(1159,type,"AST"). -ast_node(1159,level,5). -ast_node(1159,variant,"Function"). -ast_node(1159,value,"node(N)"). -ast_node(1160,type,"Location"). -ast_node(1160,level,6). -ast_node(1161,type,"Position"). -ast_node(1161,level,7). -ast_node(1162,type,"int"). -ast_node(1162,level,8). -ast_node(1162,value,37). -ast_node(1163,type,"str"). -ast_node(1163,level,8). -ast_node(1163,value,"color.lp"). -ast_node(1164,type,"int"). -ast_node(1164,level,8). -ast_node(1164,value,13). -ast_node(1165,type,"Position"). -ast_node(1165,level,7). -ast_node(1166,type,"int"). -ast_node(1166,level,8). -ast_node(1166,value,44). -ast_node(1167,type,"str"). -ast_node(1167,level,8). -ast_node(1167,value,"color.lp"). -ast_node(1168,type,"int"). -ast_node(1168,level,8). -ast_node(1168,value,13). -ast_node(1169,type,"str"). -ast_node(1169,level,6). -ast_node(1169,value,"node"). -ast_node(1170,type,"ASTSequence"). -ast_node(1170,level,6). -ast_node(1171,type,"AST"). -ast_node(1171,level,7). -ast_node(1171,variant,"Variable"). -ast_node(1171,value,"N"). -ast_node(1172,type,"Location"). -ast_node(1172,level,8). -ast_node(1173,type,"Position"). -ast_node(1173,level,9). -ast_node(1174,type,"int"). -ast_node(1174,level,10). -ast_node(1174,value,42). -ast_node(1175,type,"str"). -ast_node(1175,level,10). -ast_node(1175,value,"color.lp"). -ast_node(1176,type,"int"). -ast_node(1176,level,10). -ast_node(1176,value,13). -ast_node(1177,type,"Position"). -ast_node(1177,level,9). -ast_node(1178,type,"int"). -ast_node(1178,level,10). -ast_node(1178,value,43). -ast_node(1179,type,"str"). -ast_node(1179,level,10). -ast_node(1179,value,"color.lp"). -ast_node(1180,type,"int"). -ast_node(1180,level,10). -ast_node(1180,value,13). -ast_node(1181,type,"str"). -ast_node(1181,level,8). -ast_node(1181,value,"N"). -ast_node(1182,type,"int"). -ast_node(1182,level,6). -ast_node(1182,value,0). -ast_node(1183,type,"AST"). -ast_node(1183,level,1). -ast_node(1183,variant,"ShowTerm"). -ast_node(1183,value,"#show attr(node,N,color,C) : assign(N,C)."). -ast_node(1184,type,"Location"). -ast_node(1184,level,2). -ast_node(1185,type,"Position"). -ast_node(1185,level,3). -ast_node(1186,type,"int"). -ast_node(1186,level,4). -ast_node(1186,value,1). -ast_node(1187,type,"str"). -ast_node(1187,level,4). -ast_node(1187,value,"color.lp"). -ast_node(1188,type,"int"). -ast_node(1188,level,4). -ast_node(1188,value,14). -ast_node(1189,type,"Position"). -ast_node(1189,level,3). -ast_node(1190,type,"int"). -ast_node(1190,level,4). -ast_node(1190,value,46). -ast_node(1191,type,"str"). -ast_node(1191,level,4). -ast_node(1191,value,"color.lp"). -ast_node(1192,type,"int"). -ast_node(1192,level,4). -ast_node(1192,value,14). -ast_node(1193,type,"AST"). -ast_node(1193,level,2). -ast_node(1193,variant,"Function"). -ast_node(1193,value,"attr(node,N,color,C)"). -ast_node(1194,type,"Location"). -ast_node(1194,level,3). -ast_node(1195,type,"Position"). -ast_node(1195,level,4). -ast_node(1196,type,"int"). -ast_node(1196,level,5). -ast_node(1196,value,7). -ast_node(1197,type,"str"). -ast_node(1197,level,5). -ast_node(1197,value,"color.lp"). -ast_node(1198,type,"int"). -ast_node(1198,level,5). -ast_node(1198,value,14). -ast_node(1199,type,"Position"). -ast_node(1199,level,4). -ast_node(1200,type,"int"). -ast_node(1200,level,5). -ast_node(1200,value,30). -ast_node(1201,type,"str"). -ast_node(1201,level,5). -ast_node(1201,value,"color.lp"). -ast_node(1202,type,"int"). -ast_node(1202,level,5). -ast_node(1202,value,14). -ast_node(1203,type,"str"). -ast_node(1203,level,3). -ast_node(1203,value,"attr"). -ast_node(1204,type,"ASTSequence"). -ast_node(1204,level,3). -ast_node(1205,type,"AST"). -ast_node(1205,level,4). -ast_node(1205,variant,"SymbolicTerm"). -ast_node(1205,value,"node"). -ast_node(1206,type,"Location"). -ast_node(1206,level,5). -ast_node(1207,type,"Position"). -ast_node(1207,level,6). -ast_node(1208,type,"int"). -ast_node(1208,level,7). -ast_node(1208,value,12). -ast_node(1209,type,"str"). -ast_node(1209,level,7). -ast_node(1209,value,"color.lp"). -ast_node(1210,type,"int"). -ast_node(1210,level,7). -ast_node(1210,value,14). -ast_node(1211,type,"Position"). -ast_node(1211,level,6). -ast_node(1212,type,"int"). -ast_node(1212,level,7). -ast_node(1212,value,16). -ast_node(1213,type,"str"). -ast_node(1213,level,7). -ast_node(1213,value,"color.lp"). -ast_node(1214,type,"int"). -ast_node(1214,level,7). -ast_node(1214,value,14). -ast_node(1215,type,"Symbol"). -ast_node(1215,level,5). -ast_node(1215,value,"node"). -ast_node(1216,type,"AST"). -ast_node(1216,level,4). -ast_node(1216,variant,"Variable"). -ast_node(1216,value,"N"). -ast_node(1217,type,"Location"). -ast_node(1217,level,5). -ast_node(1218,type,"Position"). -ast_node(1218,level,6). -ast_node(1219,type,"int"). -ast_node(1219,level,7). -ast_node(1219,value,18). -ast_node(1220,type,"str"). -ast_node(1220,level,7). -ast_node(1220,value,"color.lp"). -ast_node(1221,type,"int"). -ast_node(1221,level,7). -ast_node(1221,value,14). -ast_node(1222,type,"Position"). -ast_node(1222,level,6). -ast_node(1223,type,"int"). -ast_node(1223,level,7). -ast_node(1223,value,19). -ast_node(1224,type,"str"). -ast_node(1224,level,7). -ast_node(1224,value,"color.lp"). -ast_node(1225,type,"int"). -ast_node(1225,level,7). -ast_node(1225,value,14). -ast_node(1226,type,"str"). -ast_node(1226,level,5). -ast_node(1226,value,"N"). -ast_node(1227,type,"AST"). -ast_node(1227,level,4). -ast_node(1227,variant,"SymbolicTerm"). -ast_node(1227,value,"color"). -ast_node(1228,type,"Location"). -ast_node(1228,level,5). -ast_node(1229,type,"Position"). -ast_node(1229,level,6). -ast_node(1230,type,"int"). -ast_node(1230,level,7). -ast_node(1230,value,21). -ast_node(1231,type,"str"). -ast_node(1231,level,7). -ast_node(1231,value,"color.lp"). -ast_node(1232,type,"int"). -ast_node(1232,level,7). -ast_node(1232,value,14). -ast_node(1233,type,"Position"). -ast_node(1233,level,6). -ast_node(1234,type,"int"). -ast_node(1234,level,7). -ast_node(1234,value,26). -ast_node(1235,type,"str"). -ast_node(1235,level,7). -ast_node(1235,value,"color.lp"). -ast_node(1236,type,"int"). -ast_node(1236,level,7). -ast_node(1236,value,14). -ast_node(1237,type,"Symbol"). -ast_node(1237,level,5). -ast_node(1237,value,"color"). -ast_node(1238,type,"AST"). -ast_node(1238,level,4). -ast_node(1238,variant,"Variable"). -ast_node(1238,value,"C"). -ast_node(1239,type,"Location"). -ast_node(1239,level,5). -ast_node(1240,type,"Position"). -ast_node(1240,level,6). -ast_node(1241,type,"int"). -ast_node(1241,level,7). -ast_node(1241,value,28). -ast_node(1242,type,"str"). -ast_node(1242,level,7). -ast_node(1242,value,"color.lp"). -ast_node(1243,type,"int"). -ast_node(1243,level,7). -ast_node(1243,value,14). -ast_node(1244,type,"Position"). -ast_node(1244,level,6). -ast_node(1245,type,"int"). -ast_node(1245,level,7). -ast_node(1245,value,29). -ast_node(1246,type,"str"). -ast_node(1246,level,7). -ast_node(1246,value,"color.lp"). -ast_node(1247,type,"int"). -ast_node(1247,level,7). -ast_node(1247,value,14). -ast_node(1248,type,"str"). -ast_node(1248,level,5). -ast_node(1248,value,"C"). -ast_node(1249,type,"int"). -ast_node(1249,level,3). -ast_node(1249,value,0). -ast_node(1250,type,"ASTSequence"). -ast_node(1250,level,2). -ast_node(1251,type,"AST"). -ast_node(1251,level,3). -ast_node(1251,variant,"Literal"). -ast_node(1251,value,"assign(N,C)"). -ast_node(1252,type,"Location"). -ast_node(1252,level,4). -ast_node(1253,type,"Position"). -ast_node(1253,level,5). -ast_node(1254,type,"int"). -ast_node(1254,level,6). -ast_node(1254,value,33). -ast_node(1255,type,"str"). -ast_node(1255,level,6). -ast_node(1255,value,"color.lp"). -ast_node(1256,type,"int"). -ast_node(1256,level,6). -ast_node(1256,value,14). -ast_node(1257,type,"Position"). -ast_node(1257,level,5). -ast_node(1258,type,"int"). -ast_node(1258,level,6). -ast_node(1258,value,45). -ast_node(1259,type,"str"). -ast_node(1259,level,6). -ast_node(1259,value,"color.lp"). -ast_node(1260,type,"int"). -ast_node(1260,level,6). -ast_node(1260,value,14). -ast_node(1261,type,"int"). -ast_node(1261,level,4). -ast_node(1261,value,0). -ast_node(1262,type,"AST"). -ast_node(1262,level,4). -ast_node(1262,variant,"SymbolicAtom"). -ast_node(1262,value,"assign(N,C)"). -ast_node(1263,type,"AST"). -ast_node(1263,level,5). -ast_node(1263,variant,"Function"). -ast_node(1263,value,"assign(N,C)"). -ast_node(1264,type,"Location"). -ast_node(1264,level,6). -ast_node(1265,type,"Position"). -ast_node(1265,level,7). -ast_node(1266,type,"int"). -ast_node(1266,level,8). -ast_node(1266,value,33). -ast_node(1267,type,"str"). -ast_node(1267,level,8). -ast_node(1267,value,"color.lp"). -ast_node(1268,type,"int"). -ast_node(1268,level,8). -ast_node(1268,value,14). -ast_node(1269,type,"Position"). -ast_node(1269,level,7). -ast_node(1270,type,"int"). -ast_node(1270,level,8). -ast_node(1270,value,45). -ast_node(1271,type,"str"). -ast_node(1271,level,8). -ast_node(1271,value,"color.lp"). -ast_node(1272,type,"int"). -ast_node(1272,level,8). -ast_node(1272,value,14). -ast_node(1273,type,"str"). -ast_node(1273,level,6). -ast_node(1273,value,"assign"). -ast_node(1274,type,"ASTSequence"). -ast_node(1274,level,6). -ast_node(1275,type,"AST"). -ast_node(1275,level,7). -ast_node(1275,variant,"Variable"). -ast_node(1275,value,"N"). -ast_node(1276,type,"Location"). -ast_node(1276,level,8). -ast_node(1277,type,"Position"). -ast_node(1277,level,9). -ast_node(1278,type,"int"). -ast_node(1278,level,10). -ast_node(1278,value,40). -ast_node(1279,type,"str"). -ast_node(1279,level,10). -ast_node(1279,value,"color.lp"). -ast_node(1280,type,"int"). -ast_node(1280,level,10). -ast_node(1280,value,14). -ast_node(1281,type,"Position"). -ast_node(1281,level,9). -ast_node(1282,type,"int"). -ast_node(1282,level,10). -ast_node(1282,value,41). -ast_node(1283,type,"str"). -ast_node(1283,level,10). -ast_node(1283,value,"color.lp"). -ast_node(1284,type,"int"). -ast_node(1284,level,10). -ast_node(1284,value,14). -ast_node(1285,type,"str"). -ast_node(1285,level,8). -ast_node(1285,value,"N"). -ast_node(1286,type,"AST"). -ast_node(1286,level,7). -ast_node(1286,variant,"Variable"). -ast_node(1286,value,"C"). -ast_node(1287,type,"Location"). -ast_node(1287,level,8). -ast_node(1288,type,"Position"). -ast_node(1288,level,9). -ast_node(1289,type,"int"). -ast_node(1289,level,10). -ast_node(1289,value,43). -ast_node(1290,type,"str"). -ast_node(1290,level,10). -ast_node(1290,value,"color.lp"). -ast_node(1291,type,"int"). -ast_node(1291,level,10). -ast_node(1291,value,14). -ast_node(1292,type,"Position"). -ast_node(1292,level,9). -ast_node(1293,type,"int"). -ast_node(1293,level,10). -ast_node(1293,value,44). -ast_node(1294,type,"str"). -ast_node(1294,level,10). -ast_node(1294,value,"color.lp"). -ast_node(1295,type,"int"). -ast_node(1295,level,10). -ast_node(1295,value,14). -ast_node(1296,type,"str"). -ast_node(1296,level,8). -ast_node(1296,value,"C"). -ast_node(1297,type,"int"). -ast_node(1297,level,6). -ast_node(1297,value,0). -ast_edge((0,1),key,0). -ast_edge((1,2),key,"location"). -ast_edge((2,3),key,"begin"). -ast_edge((3,4),key,"column"). -ast_edge((3,5),key,"filename"). -ast_edge((3,6),key,"line"). -ast_edge((2,7),key,"end"). -ast_edge((7,8),key,"column"). -ast_edge((7,9),key,"filename"). -ast_edge((7,10),key,"line"). -ast_edge((1,11),key,"name"). -ast_edge((1,12),key,"parameters"). -ast_edge((0,13),key,1). -ast_edge((13,14),key,"location"). -ast_edge((14,15),key,"begin"). -ast_edge((15,16),key,"column"). -ast_edge((15,17),key,"filename"). -ast_edge((15,18),key,"line"). -ast_edge((14,19),key,"end"). -ast_edge((19,20),key,"column"). -ast_edge((19,21),key,"filename"). -ast_edge((19,22),key,"line"). -ast_edge((13,23),key,"head"). -ast_edge((23,24),key,"location"). -ast_edge((24,25),key,"begin"). -ast_edge((25,26),key,"column"). -ast_edge((25,27),key,"filename"). -ast_edge((25,28),key,"line"). -ast_edge((24,29),key,"end"). -ast_edge((29,30),key,"column"). -ast_edge((29,31),key,"filename"). -ast_edge((29,32),key,"line"). -ast_edge((23,33),key,"sign"). -ast_edge((23,34),key,"atom"). -ast_edge((34,35),key,"symbol"). -ast_edge((35,36),key,"location"). -ast_edge((36,37),key,"begin"). -ast_edge((37,38),key,"column"). -ast_edge((37,39),key,"filename"). -ast_edge((37,40),key,"line"). -ast_edge((36,41),key,"end"). -ast_edge((41,42),key,"column"). -ast_edge((41,43),key,"filename"). -ast_edge((41,44),key,"line"). -ast_edge((35,45),key,"name"). -ast_edge((35,46),key,"arguments"). -ast_edge((46,47),key,0). -ast_edge((47,48),key,"location"). -ast_edge((48,49),key,"begin"). -ast_edge((49,50),key,"column"). -ast_edge((49,51),key,"filename"). -ast_edge((49,52),key,"line"). -ast_edge((48,53),key,"end"). -ast_edge((53,54),key,"column"). -ast_edge((53,55),key,"filename"). -ast_edge((53,56),key,"line"). -ast_edge((47,57),key,"left"). -ast_edge((57,58),key,"location"). -ast_edge((58,59),key,"begin"). -ast_edge((59,60),key,"column"). -ast_edge((59,61),key,"filename"). -ast_edge((59,62),key,"line"). -ast_edge((58,63),key,"end"). -ast_edge((63,64),key,"column"). -ast_edge((63,65),key,"filename"). -ast_edge((63,66),key,"line"). -ast_edge((57,67),key,"symbol"). -ast_edge((47,68),key,"right"). -ast_edge((68,69),key,"location"). -ast_edge((69,70),key,"begin"). -ast_edge((70,71),key,"column"). -ast_edge((70,72),key,"filename"). -ast_edge((70,73),key,"line"). -ast_edge((69,74),key,"end"). -ast_edge((74,75),key,"column"). -ast_edge((74,76),key,"filename"). -ast_edge((74,77),key,"line"). -ast_edge((68,78),key,"symbol"). -ast_edge((35,79),key,"external"). -ast_edge((13,80),key,"body"). -ast_edge((0,81),key,2). -ast_edge((81,82),key,"location"). -ast_edge((82,83),key,"begin"). -ast_edge((83,84),key,"column"). -ast_edge((83,85),key,"filename"). -ast_edge((83,86),key,"line"). -ast_edge((82,87),key,"end"). -ast_edge((87,88),key,"column"). -ast_edge((87,89),key,"filename"). -ast_edge((87,90),key,"line"). -ast_edge((81,91),key,"head"). -ast_edge((91,92),key,"location"). -ast_edge((92,93),key,"begin"). -ast_edge((93,94),key,"column"). -ast_edge((93,95),key,"filename"). -ast_edge((93,96),key,"line"). -ast_edge((92,97),key,"end"). -ast_edge((97,98),key,"column"). -ast_edge((97,99),key,"filename"). -ast_edge((97,100),key,"line"). -ast_edge((91,101),key,"sign"). -ast_edge((91,102),key,"atom"). -ast_edge((102,103),key,"symbol"). -ast_edge((103,104),key,"location"). -ast_edge((104,105),key,"begin"). -ast_edge((105,106),key,"column"). -ast_edge((105,107),key,"filename"). -ast_edge((105,108),key,"line"). -ast_edge((104,109),key,"end"). -ast_edge((109,110),key,"column"). -ast_edge((109,111),key,"filename"). -ast_edge((109,112),key,"line"). -ast_edge((103,113),key,"name"). -ast_edge((103,114),key,"arguments"). -ast_edge((114,115),key,0). -ast_edge((115,116),key,"location"). -ast_edge((116,117),key,"begin"). -ast_edge((117,118),key,"column"). -ast_edge((117,119),key,"filename"). -ast_edge((117,120),key,"line"). -ast_edge((116,121),key,"end"). -ast_edge((121,122),key,"column"). -ast_edge((121,123),key,"filename"). -ast_edge((121,124),key,"line"). -ast_edge((115,125),key,"symbol"). -ast_edge((114,126),key,1). -ast_edge((126,127),key,"location"). -ast_edge((127,128),key,"begin"). -ast_edge((128,129),key,"column"). -ast_edge((128,130),key,"filename"). -ast_edge((128,131),key,"line"). -ast_edge((127,132),key,"end"). -ast_edge((132,133),key,"column"). -ast_edge((132,134),key,"filename"). -ast_edge((132,135),key,"line"). -ast_edge((126,136),key,"symbol"). -ast_edge((103,137),key,"external"). -ast_edge((81,138),key,"body"). -ast_edge((0,139),key,3). -ast_edge((139,140),key,"location"). -ast_edge((140,141),key,"begin"). -ast_edge((141,142),key,"column"). -ast_edge((141,143),key,"filename"). -ast_edge((141,144),key,"line"). -ast_edge((140,145),key,"end"). -ast_edge((145,146),key,"column"). -ast_edge((145,147),key,"filename"). -ast_edge((145,148),key,"line"). -ast_edge((139,149),key,"head"). -ast_edge((149,150),key,"location"). -ast_edge((150,151),key,"begin"). -ast_edge((151,152),key,"column"). -ast_edge((151,153),key,"filename"). -ast_edge((151,154),key,"line"). -ast_edge((150,155),key,"end"). -ast_edge((155,156),key,"column"). -ast_edge((155,157),key,"filename"). -ast_edge((155,158),key,"line"). -ast_edge((149,159),key,"sign"). -ast_edge((149,160),key,"atom"). -ast_edge((160,161),key,"symbol"). -ast_edge((161,162),key,"location"). -ast_edge((162,163),key,"begin"). -ast_edge((163,164),key,"column"). -ast_edge((163,165),key,"filename"). -ast_edge((163,166),key,"line"). -ast_edge((162,167),key,"end"). -ast_edge((167,168),key,"column"). -ast_edge((167,169),key,"filename"). -ast_edge((167,170),key,"line"). -ast_edge((161,171),key,"name"). -ast_edge((161,172),key,"arguments"). -ast_edge((172,173),key,0). -ast_edge((173,174),key,"location"). -ast_edge((174,175),key,"begin"). -ast_edge((175,176),key,"column"). -ast_edge((175,177),key,"filename"). -ast_edge((175,178),key,"line"). -ast_edge((174,179),key,"end"). -ast_edge((179,180),key,"column"). -ast_edge((179,181),key,"filename"). -ast_edge((179,182),key,"line"). -ast_edge((173,183),key,"symbol"). -ast_edge((172,184),key,1). -ast_edge((184,185),key,"location"). -ast_edge((185,186),key,"begin"). -ast_edge((186,187),key,"column"). -ast_edge((186,188),key,"filename"). -ast_edge((186,189),key,"line"). -ast_edge((185,190),key,"end"). -ast_edge((190,191),key,"column"). -ast_edge((190,192),key,"filename"). -ast_edge((190,193),key,"line"). -ast_edge((184,194),key,"symbol"). -ast_edge((161,195),key,"external"). -ast_edge((139,196),key,"body"). -ast_edge((0,197),key,4). -ast_edge((197,198),key,"location"). -ast_edge((198,199),key,"begin"). -ast_edge((199,200),key,"column"). -ast_edge((199,201),key,"filename"). -ast_edge((199,202),key,"line"). -ast_edge((198,203),key,"end"). -ast_edge((203,204),key,"column"). -ast_edge((203,205),key,"filename"). -ast_edge((203,206),key,"line"). -ast_edge((197,207),key,"head"). -ast_edge((207,208),key,"location"). -ast_edge((208,209),key,"begin"). -ast_edge((209,210),key,"column"). -ast_edge((209,211),key,"filename"). -ast_edge((209,212),key,"line"). -ast_edge((208,213),key,"end"). -ast_edge((213,214),key,"column"). -ast_edge((213,215),key,"filename"). -ast_edge((213,216),key,"line"). -ast_edge((207,217),key,"sign"). -ast_edge((207,218),key,"atom"). -ast_edge((218,219),key,"symbol"). -ast_edge((219,220),key,"location"). -ast_edge((220,221),key,"begin"). -ast_edge((221,222),key,"column"). -ast_edge((221,223),key,"filename"). -ast_edge((221,224),key,"line"). -ast_edge((220,225),key,"end"). -ast_edge((225,226),key,"column"). -ast_edge((225,227),key,"filename"). -ast_edge((225,228),key,"line"). -ast_edge((219,229),key,"name"). -ast_edge((219,230),key,"arguments"). -ast_edge((230,231),key,0). -ast_edge((231,232),key,"location"). -ast_edge((232,233),key,"begin"). -ast_edge((233,234),key,"column"). -ast_edge((233,235),key,"filename"). -ast_edge((233,236),key,"line"). -ast_edge((232,237),key,"end"). -ast_edge((237,238),key,"column"). -ast_edge((237,239),key,"filename"). -ast_edge((237,240),key,"line"). -ast_edge((231,241),key,"symbol"). -ast_edge((230,242),key,1). -ast_edge((242,243),key,"location"). -ast_edge((243,244),key,"begin"). -ast_edge((244,245),key,"column"). -ast_edge((244,246),key,"filename"). -ast_edge((244,247),key,"line"). -ast_edge((243,248),key,"end"). -ast_edge((248,249),key,"column"). -ast_edge((248,250),key,"filename"). -ast_edge((248,251),key,"line"). -ast_edge((242,252),key,"symbol"). -ast_edge((219,253),key,"external"). -ast_edge((197,254),key,"body"). -ast_edge((0,255),key,5). -ast_edge((255,256),key,"location"). -ast_edge((256,257),key,"begin"). -ast_edge((257,258),key,"column"). -ast_edge((257,259),key,"filename"). -ast_edge((257,260),key,"line"). -ast_edge((256,261),key,"end"). -ast_edge((261,262),key,"column"). -ast_edge((261,263),key,"filename"). -ast_edge((261,264),key,"line"). -ast_edge((255,265),key,"head"). -ast_edge((265,266),key,"location"). -ast_edge((266,267),key,"begin"). -ast_edge((267,268),key,"column"). -ast_edge((267,269),key,"filename"). -ast_edge((267,270),key,"line"). -ast_edge((266,271),key,"end"). -ast_edge((271,272),key,"column"). -ast_edge((271,273),key,"filename"). -ast_edge((271,274),key,"line"). -ast_edge((265,275),key,"sign"). -ast_edge((265,276),key,"atom"). -ast_edge((276,277),key,"symbol"). -ast_edge((277,278),key,"location"). -ast_edge((278,279),key,"begin"). -ast_edge((279,280),key,"column"). -ast_edge((279,281),key,"filename"). -ast_edge((279,282),key,"line"). -ast_edge((278,283),key,"end"). -ast_edge((283,284),key,"column"). -ast_edge((283,285),key,"filename"). -ast_edge((283,286),key,"line"). -ast_edge((277,287),key,"name"). -ast_edge((277,288),key,"arguments"). -ast_edge((288,289),key,0). -ast_edge((289,290),key,"location"). -ast_edge((290,291),key,"begin"). -ast_edge((291,292),key,"column"). -ast_edge((291,293),key,"filename"). -ast_edge((291,294),key,"line"). -ast_edge((290,295),key,"end"). -ast_edge((295,296),key,"column"). -ast_edge((295,297),key,"filename"). -ast_edge((295,298),key,"line"). -ast_edge((289,299),key,"symbol"). -ast_edge((288,300),key,1). -ast_edge((300,301),key,"location"). -ast_edge((301,302),key,"begin"). -ast_edge((302,303),key,"column"). -ast_edge((302,304),key,"filename"). -ast_edge((302,305),key,"line"). -ast_edge((301,306),key,"end"). -ast_edge((306,307),key,"column"). -ast_edge((306,308),key,"filename"). -ast_edge((306,309),key,"line"). -ast_edge((300,310),key,"symbol"). -ast_edge((277,311),key,"external"). -ast_edge((255,312),key,"body"). -ast_edge((0,313),key,6). -ast_edge((313,314),key,"location"). -ast_edge((314,315),key,"begin"). -ast_edge((315,316),key,"column"). -ast_edge((315,317),key,"filename"). -ast_edge((315,318),key,"line"). -ast_edge((314,319),key,"end"). -ast_edge((319,320),key,"column"). -ast_edge((319,321),key,"filename"). -ast_edge((319,322),key,"line"). -ast_edge((313,323),key,"head"). -ast_edge((323,324),key,"location"). -ast_edge((324,325),key,"begin"). -ast_edge((325,326),key,"column"). -ast_edge((325,327),key,"filename"). -ast_edge((325,328),key,"line"). -ast_edge((324,329),key,"end"). -ast_edge((329,330),key,"column"). -ast_edge((329,331),key,"filename"). -ast_edge((329,332),key,"line"). -ast_edge((323,333),key,"sign"). -ast_edge((323,334),key,"atom"). -ast_edge((334,335),key,"symbol"). -ast_edge((335,336),key,"location"). -ast_edge((336,337),key,"begin"). -ast_edge((337,338),key,"column"). -ast_edge((337,339),key,"filename"). -ast_edge((337,340),key,"line"). -ast_edge((336,341),key,"end"). -ast_edge((341,342),key,"column"). -ast_edge((341,343),key,"filename"). -ast_edge((341,344),key,"line"). -ast_edge((335,345),key,"name"). -ast_edge((335,346),key,"arguments"). -ast_edge((346,347),key,0). -ast_edge((347,348),key,"location"). -ast_edge((348,349),key,"begin"). -ast_edge((349,350),key,"column"). -ast_edge((349,351),key,"filename"). -ast_edge((349,352),key,"line"). -ast_edge((348,353),key,"end"). -ast_edge((353,354),key,"column"). -ast_edge((353,355),key,"filename"). -ast_edge((353,356),key,"line"). -ast_edge((347,357),key,"symbol"). -ast_edge((346,358),key,1). -ast_edge((358,359),key,"location"). -ast_edge((359,360),key,"begin"). -ast_edge((360,361),key,"column"). -ast_edge((360,362),key,"filename"). -ast_edge((360,363),key,"line"). -ast_edge((359,364),key,"end"). -ast_edge((364,365),key,"column"). -ast_edge((364,366),key,"filename"). -ast_edge((364,367),key,"line"). -ast_edge((358,368),key,"symbol"). -ast_edge((335,369),key,"external"). -ast_edge((313,370),key,"body"). -ast_edge((0,371),key,7). -ast_edge((371,372),key,"location"). -ast_edge((372,373),key,"begin"). -ast_edge((373,374),key,"column"). -ast_edge((373,375),key,"filename"). -ast_edge((373,376),key,"line"). -ast_edge((372,377),key,"end"). -ast_edge((377,378),key,"column"). -ast_edge((377,379),key,"filename"). -ast_edge((377,380),key,"line"). -ast_edge((371,381),key,"head"). -ast_edge((381,382),key,"location"). -ast_edge((382,383),key,"begin"). -ast_edge((383,384),key,"column"). -ast_edge((383,385),key,"filename"). -ast_edge((383,386),key,"line"). -ast_edge((382,387),key,"end"). -ast_edge((387,388),key,"column"). -ast_edge((387,389),key,"filename"). -ast_edge((387,390),key,"line"). -ast_edge((381,391),key,"sign"). -ast_edge((381,392),key,"atom"). -ast_edge((392,393),key,"symbol"). -ast_edge((393,394),key,"location"). -ast_edge((394,395),key,"begin"). -ast_edge((395,396),key,"column"). -ast_edge((395,397),key,"filename"). -ast_edge((395,398),key,"line"). -ast_edge((394,399),key,"end"). -ast_edge((399,400),key,"column"). -ast_edge((399,401),key,"filename"). -ast_edge((399,402),key,"line"). -ast_edge((393,403),key,"name"). -ast_edge((393,404),key,"arguments"). -ast_edge((404,405),key,0). -ast_edge((405,406),key,"location"). -ast_edge((406,407),key,"begin"). -ast_edge((407,408),key,"column"). -ast_edge((407,409),key,"filename"). -ast_edge((407,410),key,"line"). -ast_edge((406,411),key,"end"). -ast_edge((411,412),key,"column"). -ast_edge((411,413),key,"filename"). -ast_edge((411,414),key,"line"). -ast_edge((405,415),key,"symbol"). -ast_edge((404,416),key,1). -ast_edge((416,417),key,"location"). -ast_edge((417,418),key,"begin"). -ast_edge((418,419),key,"column"). -ast_edge((418,420),key,"filename"). -ast_edge((418,421),key,"line"). -ast_edge((417,422),key,"end"). -ast_edge((422,423),key,"column"). -ast_edge((422,424),key,"filename"). -ast_edge((422,425),key,"line"). -ast_edge((416,426),key,"symbol"). -ast_edge((393,427),key,"external"). -ast_edge((371,428),key,"body"). -ast_edge((0,429),key,8). -ast_edge((429,430),key,"location"). -ast_edge((430,431),key,"begin"). -ast_edge((431,432),key,"column"). -ast_edge((431,433),key,"filename"). -ast_edge((431,434),key,"line"). -ast_edge((430,435),key,"end"). -ast_edge((435,436),key,"column"). -ast_edge((435,437),key,"filename"). -ast_edge((435,438),key,"line"). -ast_edge((429,439),key,"head"). -ast_edge((439,440),key,"location"). -ast_edge((440,441),key,"begin"). -ast_edge((441,442),key,"column"). -ast_edge((441,443),key,"filename"). -ast_edge((441,444),key,"line"). -ast_edge((440,445),key,"end"). -ast_edge((445,446),key,"column"). -ast_edge((445,447),key,"filename"). -ast_edge((445,448),key,"line"). -ast_edge((439,449),key,"sign"). -ast_edge((439,450),key,"atom"). -ast_edge((450,451),key,"symbol"). -ast_edge((451,452),key,"location"). -ast_edge((452,453),key,"begin"). -ast_edge((453,454),key,"column"). -ast_edge((453,455),key,"filename"). -ast_edge((453,456),key,"line"). -ast_edge((452,457),key,"end"). -ast_edge((457,458),key,"column"). -ast_edge((457,459),key,"filename"). -ast_edge((457,460),key,"line"). -ast_edge((451,461),key,"name"). -ast_edge((451,462),key,"arguments"). -ast_edge((462,463),key,0). -ast_edge((463,464),key,"location"). -ast_edge((464,465),key,"begin"). -ast_edge((465,466),key,"column"). -ast_edge((465,467),key,"filename"). -ast_edge((465,468),key,"line"). -ast_edge((464,469),key,"end"). -ast_edge((469,470),key,"column"). -ast_edge((469,471),key,"filename"). -ast_edge((469,472),key,"line"). -ast_edge((463,473),key,"symbol"). -ast_edge((462,474),key,1). -ast_edge((474,475),key,"location"). -ast_edge((475,476),key,"begin"). -ast_edge((476,477),key,"column"). -ast_edge((476,478),key,"filename"). -ast_edge((476,479),key,"line"). -ast_edge((475,480),key,"end"). -ast_edge((480,481),key,"column"). -ast_edge((480,482),key,"filename"). -ast_edge((480,483),key,"line"). -ast_edge((474,484),key,"symbol"). -ast_edge((451,485),key,"external"). -ast_edge((429,486),key,"body"). -ast_edge((0,487),key,9). -ast_edge((487,488),key,"location"). -ast_edge((488,489),key,"begin"). -ast_edge((489,490),key,"column"). -ast_edge((489,491),key,"filename"). -ast_edge((489,492),key,"line"). -ast_edge((488,493),key,"end"). -ast_edge((493,494),key,"column"). -ast_edge((493,495),key,"filename"). -ast_edge((493,496),key,"line"). -ast_edge((487,497),key,"head"). -ast_edge((497,498),key,"location"). -ast_edge((498,499),key,"begin"). -ast_edge((499,500),key,"column"). -ast_edge((499,501),key,"filename"). -ast_edge((499,502),key,"line"). -ast_edge((498,503),key,"end"). -ast_edge((503,504),key,"column"). -ast_edge((503,505),key,"filename"). -ast_edge((503,506),key,"line"). -ast_edge((497,507),key,"sign"). -ast_edge((497,508),key,"atom"). -ast_edge((508,509),key,"symbol"). -ast_edge((509,510),key,"location"). -ast_edge((510,511),key,"begin"). -ast_edge((511,512),key,"column"). -ast_edge((511,513),key,"filename"). -ast_edge((511,514),key,"line"). -ast_edge((510,515),key,"end"). -ast_edge((515,516),key,"column"). -ast_edge((515,517),key,"filename"). -ast_edge((515,518),key,"line"). -ast_edge((509,519),key,"name"). -ast_edge((509,520),key,"arguments"). -ast_edge((520,521),key,0). -ast_edge((521,522),key,"location"). -ast_edge((522,523),key,"begin"). -ast_edge((523,524),key,"column"). -ast_edge((523,525),key,"filename"). -ast_edge((523,526),key,"line"). -ast_edge((522,527),key,"end"). -ast_edge((527,528),key,"column"). -ast_edge((527,529),key,"filename"). -ast_edge((527,530),key,"line"). -ast_edge((521,531),key,"symbol"). -ast_edge((520,532),key,1). -ast_edge((532,533),key,"location"). -ast_edge((533,534),key,"begin"). -ast_edge((534,535),key,"column"). -ast_edge((534,536),key,"filename"). -ast_edge((534,537),key,"line"). -ast_edge((533,538),key,"end"). -ast_edge((538,539),key,"column"). -ast_edge((538,540),key,"filename"). -ast_edge((538,541),key,"line"). -ast_edge((532,542),key,"symbol"). -ast_edge((509,543),key,"external"). -ast_edge((487,544),key,"body"). -ast_edge((0,545),key,10). -ast_edge((545,546),key,"location"). -ast_edge((546,547),key,"begin"). -ast_edge((547,548),key,"column"). -ast_edge((547,549),key,"filename"). -ast_edge((547,550),key,"line"). -ast_edge((546,551),key,"end"). -ast_edge((551,552),key,"column"). -ast_edge((551,553),key,"filename"). -ast_edge((551,554),key,"line"). -ast_edge((545,555),key,"head"). -ast_edge((555,556),key,"location"). -ast_edge((556,557),key,"begin"). -ast_edge((557,558),key,"column"). -ast_edge((557,559),key,"filename"). -ast_edge((557,560),key,"line"). -ast_edge((556,561),key,"end"). -ast_edge((561,562),key,"column"). -ast_edge((561,563),key,"filename"). -ast_edge((561,564),key,"line"). -ast_edge((555,565),key,"sign"). -ast_edge((555,566),key,"atom"). -ast_edge((566,567),key,"symbol"). -ast_edge((567,568),key,"location"). -ast_edge((568,569),key,"begin"). -ast_edge((569,570),key,"column"). -ast_edge((569,571),key,"filename"). -ast_edge((569,572),key,"line"). -ast_edge((568,573),key,"end"). -ast_edge((573,574),key,"column"). -ast_edge((573,575),key,"filename"). -ast_edge((573,576),key,"line"). -ast_edge((567,577),key,"name"). -ast_edge((567,578),key,"arguments"). -ast_edge((578,579),key,0). -ast_edge((579,580),key,"location"). -ast_edge((580,581),key,"begin"). -ast_edge((581,582),key,"column"). -ast_edge((581,583),key,"filename"). -ast_edge((581,584),key,"line"). -ast_edge((580,585),key,"end"). -ast_edge((585,586),key,"column"). -ast_edge((585,587),key,"filename"). -ast_edge((585,588),key,"line"). -ast_edge((579,589),key,"symbol"). -ast_edge((578,590),key,1). -ast_edge((590,591),key,"location"). -ast_edge((591,592),key,"begin"). -ast_edge((592,593),key,"column"). -ast_edge((592,594),key,"filename"). -ast_edge((592,595),key,"line"). -ast_edge((591,596),key,"end"). -ast_edge((596,597),key,"column"). -ast_edge((596,598),key,"filename"). -ast_edge((596,599),key,"line"). -ast_edge((590,600),key,"symbol"). -ast_edge((567,601),key,"external"). -ast_edge((545,602),key,"body"). -ast_edge((0,603),key,11). -ast_edge((603,604),key,"location"). -ast_edge((604,605),key,"begin"). -ast_edge((605,606),key,"column"). -ast_edge((605,607),key,"filename"). -ast_edge((605,608),key,"line"). -ast_edge((604,609),key,"end"). -ast_edge((609,610),key,"column"). -ast_edge((609,611),key,"filename"). -ast_edge((609,612),key,"line"). -ast_edge((603,613),key,"head"). -ast_edge((613,614),key,"location"). -ast_edge((614,615),key,"begin"). -ast_edge((615,616),key,"column"). -ast_edge((615,617),key,"filename"). -ast_edge((615,618),key,"line"). -ast_edge((614,619),key,"end"). -ast_edge((619,620),key,"column"). -ast_edge((619,621),key,"filename"). -ast_edge((619,622),key,"line"). -ast_edge((613,623),key,"sign"). -ast_edge((613,624),key,"atom"). -ast_edge((624,625),key,"symbol"). -ast_edge((625,626),key,"location"). -ast_edge((626,627),key,"begin"). -ast_edge((627,628),key,"column"). -ast_edge((627,629),key,"filename"). -ast_edge((627,630),key,"line"). -ast_edge((626,631),key,"end"). -ast_edge((631,632),key,"column"). -ast_edge((631,633),key,"filename"). -ast_edge((631,634),key,"line"). -ast_edge((625,635),key,"arguments"). -ast_edge((635,636),key,0). -ast_edge((636,637),key,"location"). -ast_edge((637,638),key,"begin"). -ast_edge((638,639),key,"column"). -ast_edge((638,640),key,"filename"). -ast_edge((638,641),key,"line"). -ast_edge((637,642),key,"end"). -ast_edge((642,643),key,"column"). -ast_edge((642,644),key,"filename"). -ast_edge((642,645),key,"line"). -ast_edge((636,646),key,"name"). -ast_edge((636,647),key,"arguments"). -ast_edge((647,648),key,0). -ast_edge((648,649),key,"location"). -ast_edge((649,650),key,"begin"). -ast_edge((650,651),key,"column"). -ast_edge((650,652),key,"filename"). -ast_edge((650,653),key,"line"). -ast_edge((649,654),key,"end"). -ast_edge((654,655),key,"column"). -ast_edge((654,656),key,"filename"). -ast_edge((654,657),key,"line"). -ast_edge((648,658),key,"symbol"). -ast_edge((636,659),key,"external"). -ast_edge((635,660),key,1). -ast_edge((660,661),key,"location"). -ast_edge((661,662),key,"begin"). -ast_edge((662,663),key,"column"). -ast_edge((662,664),key,"filename"). -ast_edge((662,665),key,"line"). -ast_edge((661,666),key,"end"). -ast_edge((666,667),key,"column"). -ast_edge((666,668),key,"filename"). -ast_edge((666,669),key,"line"). -ast_edge((660,670),key,"name"). -ast_edge((660,671),key,"arguments"). -ast_edge((671,672),key,0). -ast_edge((672,673),key,"location"). -ast_edge((673,674),key,"begin"). -ast_edge((674,675),key,"column"). -ast_edge((674,676),key,"filename"). -ast_edge((674,677),key,"line"). -ast_edge((673,678),key,"end"). -ast_edge((678,679),key,"column"). -ast_edge((678,680),key,"filename"). -ast_edge((678,681),key,"line"). -ast_edge((672,682),key,"symbol"). -ast_edge((660,683),key,"external"). -ast_edge((635,684),key,2). -ast_edge((684,685),key,"location"). -ast_edge((685,686),key,"begin"). -ast_edge((686,687),key,"column"). -ast_edge((686,688),key,"filename"). -ast_edge((686,689),key,"line"). -ast_edge((685,690),key,"end"). -ast_edge((690,691),key,"column"). -ast_edge((690,692),key,"filename"). -ast_edge((690,693),key,"line"). -ast_edge((684,694),key,"name"). -ast_edge((684,695),key,"arguments"). -ast_edge((695,696),key,0). -ast_edge((696,697),key,"location"). -ast_edge((697,698),key,"begin"). -ast_edge((698,699),key,"column"). -ast_edge((698,700),key,"filename"). -ast_edge((698,701),key,"line"). -ast_edge((697,702),key,"end"). -ast_edge((702,703),key,"column"). -ast_edge((702,704),key,"filename"). -ast_edge((702,705),key,"line"). -ast_edge((696,706),key,"symbol"). -ast_edge((684,707),key,"external"). -ast_edge((603,708),key,"body"). -ast_edge((0,709),key,12). -ast_edge((709,710),key,"location"). -ast_edge((710,711),key,"begin"). -ast_edge((711,712),key,"column"). -ast_edge((711,713),key,"filename"). -ast_edge((711,714),key,"line"). -ast_edge((710,715),key,"end"). -ast_edge((715,716),key,"column"). -ast_edge((715,717),key,"filename"). -ast_edge((715,718),key,"line"). -ast_edge((709,719),key,"head"). -ast_edge((719,720),key,"location"). -ast_edge((720,721),key,"begin"). -ast_edge((721,722),key,"column"). -ast_edge((721,723),key,"filename"). -ast_edge((721,724),key,"line"). -ast_edge((720,725),key,"end"). -ast_edge((725,726),key,"column"). -ast_edge((725,727),key,"filename"). -ast_edge((725,728),key,"line"). -ast_edge((719,729),key,"left_guard"). -ast_edge((729,730),key,"comparison"). -ast_edge((729,731),key,"term"). -ast_edge((731,732),key,"location"). -ast_edge((732,733),key,"begin"). -ast_edge((733,734),key,"column"). -ast_edge((733,735),key,"filename"). -ast_edge((733,736),key,"line"). -ast_edge((732,737),key,"end"). -ast_edge((737,738),key,"column"). -ast_edge((737,739),key,"filename"). -ast_edge((737,740),key,"line"). -ast_edge((731,741),key,"symbol"). -ast_edge((719,742),key,"elements"). -ast_edge((742,743),key,0). -ast_edge((743,744),key,"location"). -ast_edge((744,745),key,"begin"). -ast_edge((745,746),key,"column"). -ast_edge((745,747),key,"filename"). -ast_edge((745,748),key,"line"). -ast_edge((744,749),key,"end"). -ast_edge((749,750),key,"column"). -ast_edge((749,751),key,"filename"). -ast_edge((749,752),key,"line"). -ast_edge((743,753),key,"literal"). -ast_edge((753,754),key,"location"). -ast_edge((754,755),key,"begin"). -ast_edge((755,756),key,"column"). -ast_edge((755,757),key,"filename"). -ast_edge((755,758),key,"line"). -ast_edge((754,759),key,"end"). -ast_edge((759,760),key,"column"). -ast_edge((759,761),key,"filename"). -ast_edge((759,762),key,"line"). -ast_edge((753,763),key,"sign"). -ast_edge((753,764),key,"atom"). -ast_edge((764,765),key,"symbol"). -ast_edge((765,766),key,"location"). -ast_edge((766,767),key,"begin"). -ast_edge((767,768),key,"column"). -ast_edge((767,769),key,"filename"). -ast_edge((767,770),key,"line"). -ast_edge((766,771),key,"end"). -ast_edge((771,772),key,"column"). -ast_edge((771,773),key,"filename"). -ast_edge((771,774),key,"line"). -ast_edge((765,775),key,"name"). -ast_edge((765,776),key,"arguments"). -ast_edge((776,777),key,0). -ast_edge((777,778),key,"location"). -ast_edge((778,779),key,"begin"). -ast_edge((779,780),key,"column"). -ast_edge((779,781),key,"filename"). -ast_edge((779,782),key,"line"). -ast_edge((778,783),key,"end"). -ast_edge((783,784),key,"column"). -ast_edge((783,785),key,"filename"). -ast_edge((783,786),key,"line"). -ast_edge((777,787),key,"name"). -ast_edge((776,788),key,1). -ast_edge((788,789),key,"location"). -ast_edge((789,790),key,"begin"). -ast_edge((790,791),key,"column"). -ast_edge((790,792),key,"filename"). -ast_edge((790,793),key,"line"). -ast_edge((789,794),key,"end"). -ast_edge((794,795),key,"column"). -ast_edge((794,796),key,"filename"). -ast_edge((794,797),key,"line"). -ast_edge((788,798),key,"name"). -ast_edge((765,799),key,"external"). -ast_edge((743,800),key,"condition"). -ast_edge((800,801),key,0). -ast_edge((801,802),key,"location"). -ast_edge((802,803),key,"begin"). -ast_edge((803,804),key,"column"). -ast_edge((803,805),key,"filename"). -ast_edge((803,806),key,"line"). -ast_edge((802,807),key,"end"). -ast_edge((807,808),key,"column"). -ast_edge((807,809),key,"filename"). -ast_edge((807,810),key,"line"). -ast_edge((801,811),key,"sign"). -ast_edge((801,812),key,"atom"). -ast_edge((812,813),key,"symbol"). -ast_edge((813,814),key,"location"). -ast_edge((814,815),key,"begin"). -ast_edge((815,816),key,"column"). -ast_edge((815,817),key,"filename"). -ast_edge((815,818),key,"line"). -ast_edge((814,819),key,"end"). -ast_edge((819,820),key,"column"). -ast_edge((819,821),key,"filename"). -ast_edge((819,822),key,"line"). -ast_edge((813,823),key,"name"). -ast_edge((813,824),key,"arguments"). -ast_edge((824,825),key,0). -ast_edge((825,826),key,"location"). -ast_edge((826,827),key,"begin"). -ast_edge((827,828),key,"column"). -ast_edge((827,829),key,"filename"). -ast_edge((827,830),key,"line"). -ast_edge((826,831),key,"end"). -ast_edge((831,832),key,"column"). -ast_edge((831,833),key,"filename"). -ast_edge((831,834),key,"line"). -ast_edge((825,835),key,"name"). -ast_edge((813,836),key,"external"). -ast_edge((719,837),key,"right_guard"). -ast_edge((709,838),key,"body"). -ast_edge((838,839),key,0). -ast_edge((839,840),key,"location"). -ast_edge((840,841),key,"begin"). -ast_edge((841,842),key,"column"). -ast_edge((841,843),key,"filename"). -ast_edge((841,844),key,"line"). -ast_edge((840,845),key,"end"). -ast_edge((845,846),key,"column"). -ast_edge((845,847),key,"filename"). -ast_edge((845,848),key,"line"). -ast_edge((839,849),key,"sign"). -ast_edge((839,850),key,"atom"). -ast_edge((850,851),key,"symbol"). -ast_edge((851,852),key,"location"). -ast_edge((852,853),key,"begin"). -ast_edge((853,854),key,"column"). -ast_edge((853,855),key,"filename"). -ast_edge((853,856),key,"line"). -ast_edge((852,857),key,"end"). -ast_edge((857,858),key,"column"). -ast_edge((857,859),key,"filename"). -ast_edge((857,860),key,"line"). -ast_edge((851,861),key,"name"). -ast_edge((851,862),key,"arguments"). -ast_edge((862,863),key,0). -ast_edge((863,864),key,"location"). -ast_edge((864,865),key,"begin"). -ast_edge((865,866),key,"column"). -ast_edge((865,867),key,"filename"). -ast_edge((865,868),key,"line"). -ast_edge((864,869),key,"end"). -ast_edge((869,870),key,"column"). -ast_edge((869,871),key,"filename"). -ast_edge((869,872),key,"line"). -ast_edge((863,873),key,"name"). -ast_edge((851,874),key,"external"). -ast_edge((0,875),key,13). -ast_edge((875,876),key,"location"). -ast_edge((876,877),key,"begin"). -ast_edge((877,878),key,"column"). -ast_edge((877,879),key,"filename"). -ast_edge((877,880),key,"line"). -ast_edge((876,881),key,"end"). -ast_edge((881,882),key,"column"). -ast_edge((881,883),key,"filename"). -ast_edge((881,884),key,"line"). -ast_edge((875,885),key,"head"). -ast_edge((885,886),key,"location"). -ast_edge((886,887),key,"begin"). -ast_edge((887,888),key,"column"). -ast_edge((887,889),key,"filename"). -ast_edge((887,890),key,"line"). -ast_edge((886,891),key,"end"). -ast_edge((891,892),key,"column"). -ast_edge((891,893),key,"filename"). -ast_edge((891,894),key,"line"). -ast_edge((885,895),key,"sign"). -ast_edge((885,896),key,"atom"). -ast_edge((896,897),key,"value"). -ast_edge((875,898),key,"body"). -ast_edge((898,899),key,0). -ast_edge((899,900),key,"location"). -ast_edge((900,901),key,"begin"). -ast_edge((901,902),key,"column"). -ast_edge((901,903),key,"filename"). -ast_edge((901,904),key,"line"). -ast_edge((900,905),key,"end"). -ast_edge((905,906),key,"column"). -ast_edge((905,907),key,"filename"). -ast_edge((905,908),key,"line"). -ast_edge((899,909),key,"sign"). -ast_edge((899,910),key,"atom"). -ast_edge((910,911),key,"symbol"). -ast_edge((911,912),key,"location"). -ast_edge((912,913),key,"begin"). -ast_edge((913,914),key,"column"). -ast_edge((913,915),key,"filename"). -ast_edge((913,916),key,"line"). -ast_edge((912,917),key,"end"). -ast_edge((917,918),key,"column"). -ast_edge((917,919),key,"filename"). -ast_edge((917,920),key,"line"). -ast_edge((911,921),key,"name"). -ast_edge((911,922),key,"arguments"). -ast_edge((922,923),key,0). -ast_edge((923,924),key,"location"). -ast_edge((924,925),key,"begin"). -ast_edge((925,926),key,"column"). -ast_edge((925,927),key,"filename"). -ast_edge((925,928),key,"line"). -ast_edge((924,929),key,"end"). -ast_edge((929,930),key,"column"). -ast_edge((929,931),key,"filename"). -ast_edge((929,932),key,"line"). -ast_edge((923,933),key,"name"). -ast_edge((923,934),key,"arguments"). -ast_edge((934,935),key,0). -ast_edge((935,936),key,"location"). -ast_edge((936,937),key,"begin"). -ast_edge((937,938),key,"column"). -ast_edge((937,939),key,"filename"). -ast_edge((937,940),key,"line"). -ast_edge((936,941),key,"end"). -ast_edge((941,942),key,"column"). -ast_edge((941,943),key,"filename"). -ast_edge((941,944),key,"line"). -ast_edge((935,945),key,"name"). -ast_edge((934,946),key,1). -ast_edge((946,947),key,"location"). -ast_edge((947,948),key,"begin"). -ast_edge((948,949),key,"column"). -ast_edge((948,950),key,"filename"). -ast_edge((948,951),key,"line"). -ast_edge((947,952),key,"end"). -ast_edge((952,953),key,"column"). -ast_edge((952,954),key,"filename"). -ast_edge((952,955),key,"line"). -ast_edge((946,956),key,"name"). -ast_edge((923,957),key,"external"). -ast_edge((911,958),key,"external"). -ast_edge((898,959),key,1). -ast_edge((959,960),key,"location"). -ast_edge((960,961),key,"begin"). -ast_edge((961,962),key,"column"). -ast_edge((961,963),key,"filename"). -ast_edge((961,964),key,"line"). -ast_edge((960,965),key,"end"). -ast_edge((965,966),key,"column"). -ast_edge((965,967),key,"filename"). -ast_edge((965,968),key,"line"). -ast_edge((959,969),key,"sign"). -ast_edge((959,970),key,"atom"). -ast_edge((970,971),key,"symbol"). -ast_edge((971,972),key,"location"). -ast_edge((972,973),key,"begin"). -ast_edge((973,974),key,"column"). -ast_edge((973,975),key,"filename"). -ast_edge((973,976),key,"line"). -ast_edge((972,977),key,"end"). -ast_edge((977,978),key,"column"). -ast_edge((977,979),key,"filename"). -ast_edge((977,980),key,"line"). -ast_edge((971,981),key,"name"). -ast_edge((971,982),key,"arguments"). -ast_edge((982,983),key,0). -ast_edge((983,984),key,"location"). -ast_edge((984,985),key,"begin"). -ast_edge((985,986),key,"column"). -ast_edge((985,987),key,"filename"). -ast_edge((985,988),key,"line"). -ast_edge((984,989),key,"end"). -ast_edge((989,990),key,"column"). -ast_edge((989,991),key,"filename"). -ast_edge((989,992),key,"line"). -ast_edge((983,993),key,"name"). -ast_edge((982,994),key,1). -ast_edge((994,995),key,"location"). -ast_edge((995,996),key,"begin"). -ast_edge((996,997),key,"column"). -ast_edge((996,998),key,"filename"). -ast_edge((996,999),key,"line"). -ast_edge((995,1000),key,"end"). -ast_edge((1000,1001),key,"column"). -ast_edge((1000,1002),key,"filename"). -ast_edge((1000,1003),key,"line"). -ast_edge((994,1004),key,"name"). -ast_edge((971,1005),key,"external"). -ast_edge((898,1006),key,2). -ast_edge((1006,1007),key,"location"). -ast_edge((1007,1008),key,"begin"). -ast_edge((1008,1009),key,"column"). -ast_edge((1008,1010),key,"filename"). -ast_edge((1008,1011),key,"line"). -ast_edge((1007,1012),key,"end"). -ast_edge((1012,1013),key,"column"). -ast_edge((1012,1014),key,"filename"). -ast_edge((1012,1015),key,"line"). -ast_edge((1006,1016),key,"sign"). -ast_edge((1006,1017),key,"atom"). -ast_edge((1017,1018),key,"symbol"). -ast_edge((1018,1019),key,"location"). -ast_edge((1019,1020),key,"begin"). -ast_edge((1020,1021),key,"column"). -ast_edge((1020,1022),key,"filename"). -ast_edge((1020,1023),key,"line"). -ast_edge((1019,1024),key,"end"). -ast_edge((1024,1025),key,"column"). -ast_edge((1024,1026),key,"filename"). -ast_edge((1024,1027),key,"line"). -ast_edge((1018,1028),key,"name"). -ast_edge((1018,1029),key,"arguments"). -ast_edge((1029,1030),key,0). -ast_edge((1030,1031),key,"location"). -ast_edge((1031,1032),key,"begin"). -ast_edge((1032,1033),key,"column"). -ast_edge((1032,1034),key,"filename"). -ast_edge((1032,1035),key,"line"). -ast_edge((1031,1036),key,"end"). -ast_edge((1036,1037),key,"column"). -ast_edge((1036,1038),key,"filename"). -ast_edge((1036,1039),key,"line"). -ast_edge((1030,1040),key,"name"). -ast_edge((1029,1041),key,1). -ast_edge((1041,1042),key,"location"). -ast_edge((1042,1043),key,"begin"). -ast_edge((1043,1044),key,"column"). -ast_edge((1043,1045),key,"filename"). -ast_edge((1043,1046),key,"line"). -ast_edge((1042,1047),key,"end"). -ast_edge((1047,1048),key,"column"). -ast_edge((1047,1049),key,"filename"). -ast_edge((1047,1050),key,"line"). -ast_edge((1041,1051),key,"name"). -ast_edge((1018,1052),key,"external"). -ast_edge((0,1053),key,14). -ast_edge((1053,1054),key,"location"). -ast_edge((1054,1055),key,"begin"). -ast_edge((1055,1056),key,"column"). -ast_edge((1055,1057),key,"filename"). -ast_edge((1055,1058),key,"line"). -ast_edge((1054,1059),key,"end"). -ast_edge((1059,1060),key,"column"). -ast_edge((1059,1061),key,"filename"). -ast_edge((1059,1062),key,"line"). -ast_edge((1053,1063),key,"name"). -ast_edge((1053,1064),key,"arity"). -ast_edge((1053,1065),key,"positive"). -ast_edge((0,1066),key,15). -ast_edge((1066,1067),key,"location"). -ast_edge((1067,1068),key,"begin"). -ast_edge((1068,1069),key,"column"). -ast_edge((1068,1070),key,"filename"). -ast_edge((1068,1071),key,"line"). -ast_edge((1067,1072),key,"end"). -ast_edge((1072,1073),key,"column"). -ast_edge((1072,1074),key,"filename"). -ast_edge((1072,1075),key,"line"). -ast_edge((1066,1076),key,"name"). -ast_edge((1066,1077),key,"arity"). -ast_edge((1066,1078),key,"positive"). -ast_edge((0,1079),key,16). -ast_edge((1079,1080),key,"location"). -ast_edge((1080,1081),key,"begin"). -ast_edge((1081,1082),key,"column"). -ast_edge((1081,1083),key,"filename"). -ast_edge((1081,1084),key,"line"). -ast_edge((1080,1085),key,"end"). -ast_edge((1085,1086),key,"column"). -ast_edge((1085,1087),key,"filename"). -ast_edge((1085,1088),key,"line"). -ast_edge((1079,1089),key,"term"). -ast_edge((1089,1090),key,"location"). -ast_edge((1090,1091),key,"begin"). -ast_edge((1091,1092),key,"column"). -ast_edge((1091,1093),key,"filename"). -ast_edge((1091,1094),key,"line"). -ast_edge((1090,1095),key,"end"). -ast_edge((1095,1096),key,"column"). -ast_edge((1095,1097),key,"filename"). -ast_edge((1095,1098),key,"line"). -ast_edge((1089,1099),key,"name"). -ast_edge((1089,1100),key,"arguments"). -ast_edge((1100,1101),key,0). -ast_edge((1101,1102),key,"location"). -ast_edge((1102,1103),key,"begin"). -ast_edge((1103,1104),key,"column"). -ast_edge((1103,1105),key,"filename"). -ast_edge((1103,1106),key,"line"). -ast_edge((1102,1107),key,"end"). -ast_edge((1107,1108),key,"column"). -ast_edge((1107,1109),key,"filename"). -ast_edge((1107,1110),key,"line"). -ast_edge((1101,1111),key,"symbol"). -ast_edge((1100,1112),key,1). -ast_edge((1112,1113),key,"location"). -ast_edge((1113,1114),key,"begin"). -ast_edge((1114,1115),key,"column"). -ast_edge((1114,1116),key,"filename"). -ast_edge((1114,1117),key,"line"). -ast_edge((1113,1118),key,"end"). -ast_edge((1118,1119),key,"column"). -ast_edge((1118,1120),key,"filename"). -ast_edge((1118,1121),key,"line"). -ast_edge((1112,1122),key,"name"). -ast_edge((1100,1123),key,2). -ast_edge((1123,1124),key,"location"). -ast_edge((1124,1125),key,"begin"). -ast_edge((1125,1126),key,"column"). -ast_edge((1125,1127),key,"filename"). -ast_edge((1125,1128),key,"line"). -ast_edge((1124,1129),key,"end"). -ast_edge((1129,1130),key,"column"). -ast_edge((1129,1131),key,"filename"). -ast_edge((1129,1132),key,"line"). -ast_edge((1123,1133),key,"symbol"). -ast_edge((1100,1134),key,3). -ast_edge((1134,1135),key,"location"). -ast_edge((1135,1136),key,"begin"). -ast_edge((1136,1137),key,"column"). -ast_edge((1136,1138),key,"filename"). -ast_edge((1136,1139),key,"line"). -ast_edge((1135,1140),key,"end"). -ast_edge((1140,1141),key,"column"). -ast_edge((1140,1142),key,"filename"). -ast_edge((1140,1143),key,"line"). -ast_edge((1134,1144),key,"symbol"). -ast_edge((1089,1145),key,"external"). -ast_edge((1079,1146),key,"body"). -ast_edge((1146,1147),key,0). -ast_edge((1147,1148),key,"location"). -ast_edge((1148,1149),key,"begin"). -ast_edge((1149,1150),key,"column"). -ast_edge((1149,1151),key,"filename"). -ast_edge((1149,1152),key,"line"). -ast_edge((1148,1153),key,"end"). -ast_edge((1153,1154),key,"column"). -ast_edge((1153,1155),key,"filename"). -ast_edge((1153,1156),key,"line"). -ast_edge((1147,1157),key,"sign"). -ast_edge((1147,1158),key,"atom"). -ast_edge((1158,1159),key,"symbol"). -ast_edge((1159,1160),key,"location"). -ast_edge((1160,1161),key,"begin"). -ast_edge((1161,1162),key,"column"). -ast_edge((1161,1163),key,"filename"). -ast_edge((1161,1164),key,"line"). -ast_edge((1160,1165),key,"end"). -ast_edge((1165,1166),key,"column"). -ast_edge((1165,1167),key,"filename"). -ast_edge((1165,1168),key,"line"). -ast_edge((1159,1169),key,"name"). -ast_edge((1159,1170),key,"arguments"). -ast_edge((1170,1171),key,0). -ast_edge((1171,1172),key,"location"). -ast_edge((1172,1173),key,"begin"). -ast_edge((1173,1174),key,"column"). -ast_edge((1173,1175),key,"filename"). -ast_edge((1173,1176),key,"line"). -ast_edge((1172,1177),key,"end"). -ast_edge((1177,1178),key,"column"). -ast_edge((1177,1179),key,"filename"). -ast_edge((1177,1180),key,"line"). -ast_edge((1171,1181),key,"name"). -ast_edge((1159,1182),key,"external"). -ast_edge((0,1183),key,17). -ast_edge((1183,1184),key,"location"). -ast_edge((1184,1185),key,"begin"). -ast_edge((1185,1186),key,"column"). -ast_edge((1185,1187),key,"filename"). -ast_edge((1185,1188),key,"line"). -ast_edge((1184,1189),key,"end"). -ast_edge((1189,1190),key,"column"). -ast_edge((1189,1191),key,"filename"). -ast_edge((1189,1192),key,"line"). -ast_edge((1183,1193),key,"term"). -ast_edge((1193,1194),key,"location"). -ast_edge((1194,1195),key,"begin"). -ast_edge((1195,1196),key,"column"). -ast_edge((1195,1197),key,"filename"). -ast_edge((1195,1198),key,"line"). -ast_edge((1194,1199),key,"end"). -ast_edge((1199,1200),key,"column"). -ast_edge((1199,1201),key,"filename"). -ast_edge((1199,1202),key,"line"). -ast_edge((1193,1203),key,"name"). -ast_edge((1193,1204),key,"arguments"). -ast_edge((1204,1205),key,0). -ast_edge((1205,1206),key,"location"). -ast_edge((1206,1207),key,"begin"). -ast_edge((1207,1208),key,"column"). -ast_edge((1207,1209),key,"filename"). -ast_edge((1207,1210),key,"line"). -ast_edge((1206,1211),key,"end"). -ast_edge((1211,1212),key,"column"). -ast_edge((1211,1213),key,"filename"). -ast_edge((1211,1214),key,"line"). -ast_edge((1205,1215),key,"symbol"). -ast_edge((1204,1216),key,1). -ast_edge((1216,1217),key,"location"). -ast_edge((1217,1218),key,"begin"). -ast_edge((1218,1219),key,"column"). -ast_edge((1218,1220),key,"filename"). -ast_edge((1218,1221),key,"line"). -ast_edge((1217,1222),key,"end"). -ast_edge((1222,1223),key,"column"). -ast_edge((1222,1224),key,"filename"). -ast_edge((1222,1225),key,"line"). -ast_edge((1216,1226),key,"name"). -ast_edge((1204,1227),key,2). -ast_edge((1227,1228),key,"location"). -ast_edge((1228,1229),key,"begin"). -ast_edge((1229,1230),key,"column"). -ast_edge((1229,1231),key,"filename"). -ast_edge((1229,1232),key,"line"). -ast_edge((1228,1233),key,"end"). -ast_edge((1233,1234),key,"column"). -ast_edge((1233,1235),key,"filename"). -ast_edge((1233,1236),key,"line"). -ast_edge((1227,1237),key,"symbol"). -ast_edge((1204,1238),key,3). -ast_edge((1238,1239),key,"location"). -ast_edge((1239,1240),key,"begin"). -ast_edge((1240,1241),key,"column"). -ast_edge((1240,1242),key,"filename"). -ast_edge((1240,1243),key,"line"). -ast_edge((1239,1244),key,"end"). -ast_edge((1244,1245),key,"column"). -ast_edge((1244,1246),key,"filename"). -ast_edge((1244,1247),key,"line"). -ast_edge((1238,1248),key,"name"). -ast_edge((1193,1249),key,"external"). -ast_edge((1183,1250),key,"body"). -ast_edge((1250,1251),key,0). -ast_edge((1251,1252),key,"location"). -ast_edge((1252,1253),key,"begin"). -ast_edge((1253,1254),key,"column"). -ast_edge((1253,1255),key,"filename"). -ast_edge((1253,1256),key,"line"). -ast_edge((1252,1257),key,"end"). -ast_edge((1257,1258),key,"column"). -ast_edge((1257,1259),key,"filename"). -ast_edge((1257,1260),key,"line"). -ast_edge((1251,1261),key,"sign"). -ast_edge((1251,1262),key,"atom"). -ast_edge((1262,1263),key,"symbol"). -ast_edge((1263,1264),key,"location"). -ast_edge((1264,1265),key,"begin"). -ast_edge((1265,1266),key,"column"). -ast_edge((1265,1267),key,"filename"). -ast_edge((1265,1268),key,"line"). -ast_edge((1264,1269),key,"end"). -ast_edge((1269,1270),key,"column"). -ast_edge((1269,1271),key,"filename"). -ast_edge((1269,1272),key,"line"). -ast_edge((1263,1273),key,"name"). -ast_edge((1263,1274),key,"arguments"). -ast_edge((1274,1275),key,0). -ast_edge((1275,1276),key,"location"). -ast_edge((1276,1277),key,"begin"). -ast_edge((1277,1278),key,"column"). -ast_edge((1277,1279),key,"filename"). -ast_edge((1277,1280),key,"line"). -ast_edge((1276,1281),key,"end"). -ast_edge((1281,1282),key,"column"). -ast_edge((1281,1283),key,"filename"). -ast_edge((1281,1284),key,"line"). -ast_edge((1275,1285),key,"name"). -ast_edge((1274,1286),key,1). -ast_edge((1286,1287),key,"location"). -ast_edge((1287,1288),key,"begin"). -ast_edge((1288,1289),key,"column"). -ast_edge((1288,1290),key,"filename"). -ast_edge((1288,1291),key,"line"). -ast_edge((1287,1292),key,"end"). -ast_edge((1292,1293),key,"column"). -ast_edge((1292,1294),key,"filename"). -ast_edge((1292,1295),key,"line"). -ast_edge((1286,1296),key,"name"). -ast_edge((1263,1297),key,"external"). - diff --git a/examples/angular/ast/out1.png b/examples/angular/ast/out1.png deleted file mode 100644 index f18cc15f..00000000 Binary files a/examples/angular/ast/out1.png and /dev/null differ diff --git a/examples/angular/ast/out2.png b/examples/angular/ast/out2.png deleted file mode 100644 index c7d80b15..00000000 Binary files a/examples/angular/ast/out2.png and /dev/null differ diff --git a/examples/angular/ast/ui.lp b/examples/angular/ast/ui.lp deleted file mode 100644 index db07ad33..00000000 --- a/examples/angular/ast/ui.lp +++ /dev/null @@ -1,60 +0,0 @@ - -% Clingraph nodes -node(I) :- ast_node(I, _, _), ast_show(node, I). - -elem(window, window, root). -when(window, load, context, (selected_node, X)):- _clinguin_context(selected_node, X). - - %%%%%%%%%%%%%%%%%%%%%%%% - % Edition - %%%%%%%%%%%%%%%%%%%%%%%% - elem(form, container, window). - attr(form, class, ("p-3";"bg-secondary";"bg-opacity-50";"rounded")). - attr(form, order, 1). - attr(form, width, "500px"). - attr(form, flex_direction, "row-reverse"). - attr(form, class, ("justify-content-end";"m-3")). - - - elem(form_label, label, form). - attr(form_label, label, "Edit node"). - attr(form_label, class, ("px-1";"fw-bold")). - - elem(form_label_node, label, form). - attr(form_label_node, label, X):-_clinguin_context(selected_node, X). - attr(form_label_node, class, ("px-2";"fw-bold")). - - elem(show_children, button, form ). - attr(show_children, class, ("btn-light";"btn-sm";"m-2") ). - attr(show_children, label, "Show children" ). - attr(show_children, icon, "fa-eye" ). - when(show_children, click, call, add_atom(show_children(_context_value(selected_node),true))). - - elem(hide_chidren, button, form ). - attr(hide_chidren, class, ("btn-light";"btn-sm";"m-2") ). - attr(hide_chidren, label, "Hide children" ). - attr(hide_chidren, icon, "fa-eye-slash" ). - when(hide_chidren, click, call, remove_atom(show_children(_context_value(selected_node),true))). - - - %%%%%%%%%%%%%%%%%%%%%%%% - % Canvas - %%%%%%%%%%%%%%%%%%%%%%%% - elem(c, canvas, window). - attr(c, order, 2). - attr(c, image_type, clingraph). - - %%%%%%%%%%%%%%%%%%%%%%%% - % Clingraph nodes - %%%%%%%%%%%%%%%%%%%%%%%% - elem(n(X), svg_node, c) :- node(X). - attr(n(X), clingraph_id, X) :- node(X). - when(n(X), click, context, (selected_node, X)):- node(X). - when(n(X), click, call, update):- node(X). - -%%%%%%%%%%%%%%%%%%%%%%%% -% Menu bar -%%%%%%%%%%%%%%%%%%%%%%%% -elem(menu_bar, menu_bar, window). -attr(menu_bar, title, "AST"). -attr(menu_bar, icon, "fa-diagram-project"). diff --git a/examples/angular/ast/viz.lp b/examples/angular/ast/viz.lp deleted file mode 100644 index de35ecf7..00000000 --- a/examples/angular/ast/viz.lp +++ /dev/null @@ -1,43 +0,0 @@ -#const _color_secondary= @color("secondary"). - -node(I) :- ast_node(I, _, _), ast_show(node, I). -edge(I) :- ast_edge(I, _, _), ast_show(edge, I). - -attr(node, I, label, @concat( - "<", - "", - "", - "", - "{% if variant %}{% endif %}", - "", - "{% if value %}", - "", - "{% endif %}", - "
{{id}}{{type}}{{variant}}
", - " {{value}} ", - "
>" -)) :- node(I). - -attr(node, I, fillcolor, @concat(_color_secondary,"50")) - :- node(I), _clinguin_context(selected_node, I). -attr(node, I, style, filled) - :- node(I), _clinguin_context(selected_node, I). -attr(node, I, (label, id), I) - :- node(I). -attr(node, I, (label, type), T) - :- node(I), ast_node(I, type, T). -attr(node, I, (label, variant), V) - :- node(I), ast_node(I, variant, V). -attr(node, I, (label, colspan), 2) - :- node(I), ast_node(I, value, _), not ast_node(I, variant, _). -attr(node, I, (label, colspan), 3) - :- node(I), ast_node(I, value, _), ast_node(I, variant, _). -attr(node, I, (label, value), @html_escape(V)) - :- node(I), ast_node(I, value, V). - -attr(edge, I, label, L) :- edge(I), ast_edge(I, key, L). - -attr(graph_nodes, default, fontsize, 10). -attr(graph_nodes, default, shape, plain). - -attr(graph_edges, default, fontsize, 10). \ No newline at end of file diff --git a/examples/angular/catdog/README.md b/examples/angular/catdog/README.md index 7d4d0a05..0971b746 100644 --- a/examples/angular/catdog/README.md +++ b/examples/angular/catdog/README.md @@ -1,18 +1,55 @@ -## Cat and Dog people placement +# Cats and dogs - **Backend**: `ExplanationBackend` -- **Frontend**: `AngularFrontend` -This example was used in the paper for clinguin in [ICLP 2024](https://www.iclp24.utdallas.edu/). The aim is to place people in tables so that no cat people are sitting with dog people. +This example was used in the paper for clinguin in [ICLP 2024](https://www.iclp24.utdallas.edu/). +The aim is to place people in tables so that no cat-people are sitting with dog-people. +## Usage -### Usage +```console +$ clinguin client-server --domain-files catdog/{instance.lp,encoding-explain.lp} --ui-files catdog/{ui-tables.lp,ui-menu.lp,ui-people.lp,ui-explain.lp,ui-explain-msg.lp} --backend ExplanationBackend --assumption-signature cons,2 +``` + + + + + +## Domain Files + +```{literalinclude} ../../../examples/angular/catdog/instance.lp + :language: prolog + :caption: instance.lp +``` +```{literalinclude} ../../../examples/angular/catdog/encoding-explain.lp + :language: prolog + :caption: encoding-explain.lp ``` -clinguin client-server --domain-files examples/angular/catdog/{instance.lp,encoding-explain.lp} --ui-files examples/angular/catdog/{ui-tables.lp,ui-menu.lp,ui-people.lp,ui-explain.lp,ui-explain-msg.lp} --backend ExplanationBackend --assumption-signature cons,2 + +## UI Files + +```{literalinclude} ../../../examples/angular/catdog/ui-tables.lp + :language: prolog + :caption: ui-tables.lp +``` + +```{literalinclude} ../../../examples/angular/catdog/ui-menu.lp + :language: prolog + :caption: ui-menu.lp ``` -![](out1.png) -![](out2.png) -![](out3.png) +```{literalinclude} ../../../examples/angular/catdog/ui-people.lp + :language: prolog + :caption: ui-people.lp +``` + +```{literalinclude} ../../../examples/angular/catdog/ui-explain.lp + :language: prolog + :caption: ui-explain.lp +``` +```{literalinclude} ../../../examples/angular/catdog/ui-explain-msg.lp + :language: prolog + :caption: ui-explain-msg.lp +``` \ No newline at end of file diff --git a/examples/angular/catdog/out1.png b/examples/angular/catdog/out1.png deleted file mode 100644 index 2b261da9..00000000 Binary files a/examples/angular/catdog/out1.png and /dev/null differ diff --git a/examples/angular/catdog/out2.png b/examples/angular/catdog/out2.png deleted file mode 100644 index feb6b5dc..00000000 Binary files a/examples/angular/catdog/out2.png and /dev/null differ diff --git a/examples/angular/catdog/out3.png b/examples/angular/catdog/out3.png deleted file mode 100644 index 4c970f5e..00000000 Binary files a/examples/angular/catdog/out3.png and /dev/null differ diff --git a/examples/angular/catdog/ui-menu.lp b/examples/angular/catdog/ui-menu.lp index 5e8d90db..97ef52b3 100644 --- a/examples/angular/catdog/ui-menu.lp +++ b/examples/angular/catdog/ui-menu.lp @@ -19,11 +19,6 @@ attr(seat_dd(S), class, "opacity-75"):- _all(assign(P,S)), % Extension from the paper % ----------------------------- -% Messages and use of domain state _clinguin_unsat (Could be removed but this might be reached when adding more people than seats) -elem(message_unsat,message,w):-_clinguin_unsat. -attr(message_unsat, title, "Error"):-_clinguin_unsat. -attr(message_unsat, message, "Unsatisfiable output."):-_clinguin_unsat. -attr(message_unsat, type, error):-_clinguin_unsat. % Download action for instance (We can remove it and just comment that can be used) elem(menu_bar_download, button, menu_bar). diff --git a/examples/angular/catdog/ui.gif b/examples/angular/catdog/ui.gif new file mode 100644 index 00000000..d29f2ac1 Binary files /dev/null and b/examples/angular/catdog/ui.gif differ diff --git a/examples/angular/elevator/README.md b/examples/angular/elevator/README.md index 6945f34c..183227aa 100644 --- a/examples/angular/elevator/README.md +++ b/examples/angular/elevator/README.md @@ -1,19 +1,34 @@ -## Elevator +# Elevator -- **Backend**: `ClingoMultishotBackend` -- **Frontend**: `AngularFrontend` +This example showcases one way to use clinguin in an incremental multi-shot encoding. In this case we use a planning problem of an elevator. -This example showcases one way to use clinguin in a multi-shot encoding. -In this case we use a planning problem and use incremental solving. +## Usage +```console +$ clinguin client-server --domain-files elevator/{encoding.lp,instance.lp} --ui-files elevator/ui.lp +``` + + + + -### Usage +## Domain Files +```{literalinclude} ../../../examples/angular/elevator/instance.lp + :language: prolog + :caption: instance.lp ``` -clinguin client-server --domain-files examples/angular/elevator/encoding.lp examples/angular/elevator/instance.lp --ui-files examples/angular/elevator/ui.lp --server-log-level DEBUG +```{literalinclude} ../../../examples/angular/elevator/encoding.lp + :language: prolog + :caption: encoding.lp ``` -![](out1.png) -![](out2.png) -![](out3.png) +## UI Files + +```{literalinclude} ../../../examples/angular/elevator/ui.lp + :language: prolog + :caption: ui.lp +``` + + diff --git a/examples/angular/elevator/out1.png b/examples/angular/elevator/out1.png deleted file mode 100644 index 5e67e0cf..00000000 Binary files a/examples/angular/elevator/out1.png and /dev/null differ diff --git a/examples/angular/elevator/out2.png b/examples/angular/elevator/out2.png deleted file mode 100644 index 5631003b..00000000 Binary files a/examples/angular/elevator/out2.png and /dev/null differ diff --git a/examples/angular/elevator/out3.png b/examples/angular/elevator/out3.png deleted file mode 100644 index 1005c570..00000000 Binary files a/examples/angular/elevator/out3.png and /dev/null differ diff --git a/examples/angular/elevator/ui.gif b/examples/angular/elevator/ui.gif new file mode 100644 index 00000000..428b0858 Binary files /dev/null and b/examples/angular/elevator/ui.gif differ diff --git a/examples/angular/graph_coloring/README.md b/examples/angular/graph_coloring/README.md index af97c3c2..dc5a170f 100644 --- a/examples/angular/graph_coloring/README.md +++ b/examples/angular/graph_coloring/README.md @@ -1,14 +1,34 @@ -## AST +# AST - **Backend**: `ClingraphBackend` -- **Frontend**: `AngularFrontend` -### Usage +Implements the [graph coloring problem](https://en.wikipedia.org/wiki/Graph_coloring). Showcases how to use the domain state in the *clingraph* encoding. + +## Usage + +```console +$ clinguin client-server --domain-files graph_coloring/{encoding.lp,instance.lp} --ui-files graph_coloring/ui.lp --backend=ClingraphBackend --clingraph-files=graph_coloring/viz.lp ``` -clinguin client-server --domain-files examples/angular/graph_coloring/encoding.lp examples/angular/graph_coloring/instance.lp --ui-files examples/angular/graph_coloring/ui.lp --backend=ClingraphBackend --clingraph-files=examples/angular/graph_coloring/viz.lp + + + + + +## Domain Files + +```{literalinclude} ../../../examples/angular/graph_coloring/instance.lp + :language: prolog + :caption: instance.lp +``` +```{literalinclude} ../../../examples/angular/graph_coloring/encoding.lp + :language: prolog + :caption: encoding.lp ``` -![](out1.png) -![](out2.png) +## UI Files +```{literalinclude} ../../../examples/angular/graph_coloring/ui.lp + :language: prolog + :caption: ui.lp +``` diff --git a/examples/angular/graph_coloring/out1.png b/examples/angular/graph_coloring/out1.png deleted file mode 100644 index 851ac268..00000000 Binary files a/examples/angular/graph_coloring/out1.png and /dev/null differ diff --git a/examples/angular/graph_coloring/out2.png b/examples/angular/graph_coloring/out2.png deleted file mode 100644 index 4abfd2d1..00000000 Binary files a/examples/angular/graph_coloring/out2.png and /dev/null differ diff --git a/examples/angular/graph_coloring/ui.gif b/examples/angular/graph_coloring/ui.gif new file mode 100644 index 00000000..20e2aadf Binary files /dev/null and b/examples/angular/graph_coloring/ui.gif differ diff --git a/examples/angular/graph_coloring/ui.lp b/examples/angular/graph_coloring/ui.lp index c9b596aa..3b189104 100644 --- a/examples/angular/graph_coloring/ui.lp +++ b/examples/angular/graph_coloring/ui.lp @@ -47,7 +47,7 @@ elem(window, window, root). attr(b1, icon, "fa-download"). elem(t1, textfield, c1). - attr(t1, placeholder, "Optinal ASP program with #show statements"). + attr(t1, placeholder, "Optional #show statements"). attr(t1, width, 450). when(t1, input, context, (show_download, _value)). diff --git a/examples/angular/jobshop/README.md b/examples/angular/jobshop/README.md index 9536ad3f..a7ad44c3 100644 --- a/examples/angular/jobshop/README.md +++ b/examples/angular/jobshop/README.md @@ -1,12 +1,33 @@ -## Jobshop +# Jobshop - **Backend**: `ClingoDLBackend` -- **Frontend**: `AngularFrontend` -### Usage +This example is a simple version of the [job-shop scheduling problem](https://en.wikipedia.org/wiki/Job-shop_scheduling) which uses [clingodl](https://potassco.org/labs/clingoDL/). +## Usage + +```console +$ clinguin client-server --domain-files jobshop/encoding.lp jobshop/instance.lp --ui-files jobshop/ui.lp --backend ClingoDLBackend ``` -clinguin client-server --domain-files examples/angular/jobshop/encoding.lp examples/angular/jobshop/instance.lp --ui-files examples/angular/jobshop/ui.lp --backend ClingoDLBackend + + + + + +## Domain Files + +```{literalinclude} ../../../examples/angular/jobshop/instance.lp + :language: prolog + :caption: instance.lp +``` +```{literalinclude} ../../../examples/angular/jobshop/encoding.lp + :language: prolog + :caption: encoding.lp ``` -![](out.png) +## UI Files + +```{literalinclude} ../../../examples/angular/jobshop/ui.lp + :language: prolog + :caption: ui.lp +``` diff --git a/examples/angular/jobshop/out.png b/examples/angular/jobshop/out.png deleted file mode 100644 index bcefb65d..00000000 Binary files a/examples/angular/jobshop/out.png and /dev/null differ diff --git a/examples/angular/jobshop/ui.gif b/examples/angular/jobshop/ui.gif new file mode 100644 index 00000000..668b7c43 Binary files /dev/null and b/examples/angular/jobshop/ui.gif differ diff --git a/examples/angular/knapsack/README.md b/examples/angular/knapsack/README.md index d2246db4..47328602 100644 --- a/examples/angular/knapsack/README.md +++ b/examples/angular/knapsack/README.md @@ -1,18 +1,34 @@ -## Knapsack +# Knapsack -- **Backend**: `ClingoMultishotBackend` -- **Frontend**: `AngularFrontend` - -Solves the [Knapsack problem](https://developers.google.com/optimization/pack/knapsack#:~:text=In%20the%20knapsack%20problem%2C%20you,can't%20pack%20them%20all.). +Solves the [Knapsack problem](https://en.wikipedia.org/wiki/Knapsack_problem). By doing so, it showcases the use of optimal consequences and false assumptions. -### Usage +## Usage + +```console +$ clinguin client-server --domain-files knapsack/{encoding.lp,instance.lp} --ui-files knapsack/ui.lp +``` + + + + +## Domain Files + +```{literalinclude} ../../../examples/angular/knapsack/instance.lp + :language: prolog + :caption: instance.lp +``` +```{literalinclude} ../../../examples/angular/knapsack/encoding.lp + :language: prolog + :caption: encoding.lp ``` -clinguin client-server --domain-files examples/angular/knapsack/encoding.lp examples/angular/knapsack/instance.lp --ui-files examples/angular/knapsack/ui.lp + +## UI Files + +```{literalinclude} ../../../examples/angular/knapsack/ui.lp + :language: prolog + :caption: ui.lp ``` -![](out1.png) -![](out2.png) -![](out3.png) diff --git a/examples/angular/knapsack/instance.lp b/examples/angular/knapsack/instance.lp index 0d6bfad3..766b5bdb 100644 --- a/examples/angular/knapsack/instance.lp +++ b/examples/angular/knapsack/instance.lp @@ -1,20 +1,17 @@ object(computer). object(book). -object(water). object(phone). object(camera). object(jacket). weight(computer, 1000). weight(book, 100). -weight(water, 600). weight(phone, 200). weight(camera, 500). weight(jacket, 500). value(computer, 1000). value(book, 20). -value(water, 1). value(phone, 500). value(jacket, 50). value(camera, 800). diff --git a/examples/angular/knapsack/out1.png b/examples/angular/knapsack/out1.png deleted file mode 100644 index a3d24975..00000000 Binary files a/examples/angular/knapsack/out1.png and /dev/null differ diff --git a/examples/angular/knapsack/out2.png b/examples/angular/knapsack/out2.png deleted file mode 100644 index 5deca76b..00000000 Binary files a/examples/angular/knapsack/out2.png and /dev/null differ diff --git a/examples/angular/knapsack/out3.png b/examples/angular/knapsack/out3.png deleted file mode 100644 index b81f398e..00000000 Binary files a/examples/angular/knapsack/out3.png and /dev/null differ diff --git a/examples/angular/knapsack/ui.gif b/examples/angular/knapsack/ui.gif new file mode 100644 index 00000000..ccb19af7 Binary files /dev/null and b/examples/angular/knapsack/ui.gif differ diff --git a/examples/angular/knapsack/ui.lp b/examples/angular/knapsack/ui.lp index c1012576..d5a4d962 100644 --- a/examples/angular/knapsack/ui.lp +++ b/examples/angular/knapsack/ui.lp @@ -11,12 +11,13 @@ attr(objects, class, ("p-2")). attr(objects, width, 300). elem(object(O), container, objects):-object(O). - attr(object(O), class, ("m-1";"p-1";"rounded";"d-flex";"flex-row";"justify-content-between";"bg-opacity-50")):-object(O). + attr(object(O), class, ("m-1";"p-1";"rounded";"d-flex";"flex-row";"justify-content-between";"bg-opacity-50";"border";"border-1";)):-object(O). attr(object(O), class, ("bg-info")):-object(O), not _any_opt(take(O)). attr(object(O), class, ("bg-success")):-object(O), _any_opt(take(O)), not taken(O). attr(object(O), class, ("bg-secondary")):- taken(O). attr(object(O), class, ("bg-danger")):-object(O), _clinguin_assume(take(O),false). - attr(object(O), class, ("border";"border-1";"border-dark")):-object(O), _clinguin_assume(take(O),true). + attr(object(O), class, ("border-dark")):-object(O), _clinguin_assume(take(O),true). + attr(object(O), class, ("border-white")):-object(O), not _clinguin_assume(take(O),true). elem(object_info(O), container, object(O)):-object(O). diff --git a/examples/angular/placement/README.md b/examples/angular/placement/README.md index f5067fd7..4c47b919 100644 --- a/examples/angular/placement/README.md +++ b/examples/angular/placement/README.md @@ -1,17 +1,38 @@ -## Placement +# Placement -- **Backend**: `ClingoMultishotBackend` -- **Frontend**: `AngularFrontend` +Showcases multiple features of the web fronted in the form of a smart seat placement application. -Showcases multiple features of the web fronted in the form of a smart seat placement application +This example show how to use consequences with optimization statements to have user feedback on optimal models. +The option ` --opt-timeout 0` makes sure that one model is computed at a time to try to find the optimal one. +## Usage -### Usage +``` +clinguin client-server --domain-files placement/{instance.lp,encoding.lp} --ui-files placement/ui.lp --opt-timeout 0 +``` + + + + + +## Domain Files +```{literalinclude} ../../../examples/angular/placement/instance.lp + :language: prolog + :caption: instance.lp ``` -clinguin client-server --domain-files examples/angular/placement/instance.lp examples/angular/placement/encoding.lp --ui-files examples/angular/placement/ui.lp +```{literalinclude} ../../../examples/angular/placement/encoding.lp + :language: prolog + :caption: encoding.lp ``` -![](out1.png) -![](out2.png) -![](out3.png) +## UI Files + +```{literalinclude} ../../../examples/angular/placement/ui.lp + :language: prolog + :caption: ui.lp +``` + + + + diff --git a/examples/angular/placement/encoding.lp b/examples/angular/placement/encoding.lp index ceee3e8a..4f1d2533 100644 --- a/examples/angular/placement/encoding.lp +++ b/examples/angular/placement/encoding.lp @@ -7,7 +7,7 @@ :- assign(B,P1),assign(B,P2),P1 + +## Domain Files + +```{literalinclude} ../../../examples/angular/study_regulations/instance.lp + :language: prolog + :caption: instance.lp +``` +```{literalinclude} ../../../examples/angular/study_regulations/encoding.lp + :language: prolog + :caption: encoding.lp +``` + +## UI Files + +```{literalinclude} ../../../examples/angular/study_regulations/ui.lp + :language: prolog + :caption: ui.lp +``` diff --git a/examples/angular/study_regulations/out.png b/examples/angular/study_regulations/out.png deleted file mode 100644 index f731fd4e..00000000 Binary files a/examples/angular/study_regulations/out.png and /dev/null differ diff --git a/examples/angular/study_regulations/ui.gif b/examples/angular/study_regulations/ui.gif new file mode 100644 index 00000000..e621ec03 Binary files /dev/null and b/examples/angular/study_regulations/ui.gif differ diff --git a/examples/angular/style/README.md b/examples/angular/style/README.md index 0bc056be..54ae68e2 100644 --- a/examples/angular/style/README.md +++ b/examples/angular/style/README.md @@ -1,14 +1,11 @@ -## Style - -- **Backend**: `ClingoMultishotBackend` -- **Frontend**: `AngularFrontend` +# Style Showcases multiple style options from bootstrap -### Usage +## Usage ``` -clinguin client-server --domain-files examples/angular/style/encoding.lp --ui-files examples/angular/style/ui.lp +clinguin client-server --domain-files style/encoding.lp --ui-files style/ui.lp ``` ![](out.png) diff --git a/examples/angular/sudoku/README.md b/examples/angular/sudoku/README.md index 6ea3b6db..8b1c9f62 100644 --- a/examples/angular/sudoku/README.md +++ b/examples/angular/sudoku/README.md @@ -1,13 +1,34 @@ -## Sudoku +# Sudoku -- **Backend**: `ClingoMultishotBackend` -- **Frontend**: `AngularFrontend` +This example uses the well known [sudoku puzzle](https://en.wikipedia.org/wiki/Sudoku). -### Usage +## Usage + +```console +$ clinguin client-server --domain-files sudoku/{encoding.lp,instance.lp} --ui-files sudoku/ui.lp ``` -clinguin client-server --domain-files examples/angular/sudoku/instance.lp examples/angular/sudoku/encoding.lp --ui-files examples/angular/sudoku/ui.lp + + + + + +## Domain Files + +```{literalinclude} ../../../examples/angular/sudoku/instance.lp + :language: prolog + :caption: instance.lp ``` +```{literalinclude} ../../../examples/angular/sudoku/encoding.lp + :language: prolog + :caption: encoding.lp +``` + +## UI Files + +```{literalinclude} ../../../examples/angular/sudoku/ui.lp + :language: prolog + :caption: ui.lp +``` + -![](out1.png) -![](out2.png) diff --git a/examples/angular/sudoku/encoding.lp b/examples/angular/sudoku/encoding.lp index a4f582b4..a3c0ab47 100644 --- a/examples/angular/sudoku/encoding.lp +++ b/examples/angular/sudoku/encoding.lp @@ -1,5 +1,3 @@ -% %%%%%%%%%%%%%%%%%%%%%%%%% Encoding - #const dim = 3. val(1..dim*dim). diff --git a/examples/angular/sudoku/instance.lp b/examples/angular/sudoku/instance.lp index c4861fda..d08239ef 100644 --- a/examples/angular/sudoku/instance.lp +++ b/examples/angular/sudoku/instance.lp @@ -1,5 +1,3 @@ -% %%%%%%%%%%%%%%%%%%%%%%%%% Instance - initial(5,1,8). initial(6,2,7). initial(7,1,4). @@ -29,9 +27,3 @@ initial(9,6,6). initial(1,7,6). initial(5,7,7). initial(6,7,8). -% initial(8,7,9). -% initial(9,7,4). -% initial(2,8,7). -% initial(3,8,3). -% initial(4,8,6). -% initial(5,8,9). diff --git a/examples/angular/sudoku/out1.png b/examples/angular/sudoku/out1.png deleted file mode 100644 index 03368e2f..00000000 Binary files a/examples/angular/sudoku/out1.png and /dev/null differ diff --git a/examples/angular/sudoku/out2.png b/examples/angular/sudoku/out2.png deleted file mode 100644 index a0ab69dc..00000000 Binary files a/examples/angular/sudoku/out2.png and /dev/null differ diff --git a/examples/angular/sudoku/ui.gif b/examples/angular/sudoku/ui.gif new file mode 100644 index 00000000..bde5ead9 Binary files /dev/null and b/examples/angular/sudoku/ui.gif differ diff --git a/examples/angular/sudoku_advanced/README.md b/examples/angular/sudoku_advanced/README.md index f0c40cd9..5e0f4fbc 100644 --- a/examples/angular/sudoku_advanced/README.md +++ b/examples/angular/sudoku_advanced/README.md @@ -1,18 +1,38 @@ -## Sudoku +## Sudoku Explained - **Backend**: `ExplanationBackend` -- **Frontend**: `AngularFrontend` An advanced version of the sudoku where all values are listed as possibilities but when an invalid one is chosen, the explanation is highlighted. Notice that the instances uses choices on predicate `initial/3`. This way they can be used as assumptions and be included in the `_clinguin_mus` predicate by the `ExplanationBackend`. The option `--assumption-signature initial,3` adds all these atoms as true assumptions. -### Usage +## Usage + +```console +$ clinguin client-server --domain-files sudoku_advanced/{encoding.lp,instance.lp} --ui-files sudoku_advanced/ui.lp --backend ExplanationBackend --assumption-signature initial,3 ``` -clinguin client-server --domain-files examples/angular/sudoku_advanced/instance.lp examples/angular/sudoku_advanced/encoding.lp --ui-files examples/angular/sudoku_advanced/ui.lp --backend ExplanationBackend --assumption-signature initial,3 + + + + + +## Domain Files + +```{literalinclude} ../../../examples/angular/sudoku_advanced/instance.lp + :language: prolog + :caption: instance.lp ``` +```{literalinclude} ../../../examples/angular/sudoku_advanced/encoding.lp + :language: prolog + :caption: encoding.lp +``` + +## UI Files + +```{literalinclude} ../../../examples/angular/sudoku_advanced/ui.lp + :language: prolog + :caption: ui.lp +``` + -![](out1.png) -![](out2.png) -![](out3.png) diff --git a/examples/angular/sudoku_advanced/encoding.lp b/examples/angular/sudoku_advanced/encoding.lp index a4f582b4..a3c0ab47 100644 --- a/examples/angular/sudoku_advanced/encoding.lp +++ b/examples/angular/sudoku_advanced/encoding.lp @@ -1,5 +1,3 @@ -% %%%%%%%%%%%%%%%%%%%%%%%%% Encoding - #const dim = 3. val(1..dim*dim). diff --git a/examples/angular/sudoku_advanced/instance.lp b/examples/angular/sudoku_advanced/instance.lp index c4861fda..d08239ef 100644 --- a/examples/angular/sudoku_advanced/instance.lp +++ b/examples/angular/sudoku_advanced/instance.lp @@ -1,5 +1,3 @@ -% %%%%%%%%%%%%%%%%%%%%%%%%% Instance - initial(5,1,8). initial(6,2,7). initial(7,1,4). @@ -29,9 +27,3 @@ initial(9,6,6). initial(1,7,6). initial(5,7,7). initial(6,7,8). -% initial(8,7,9). -% initial(9,7,4). -% initial(2,8,7). -% initial(3,8,3). -% initial(4,8,6). -% initial(5,8,9). diff --git a/examples/angular/sudoku_advanced/ui.gif b/examples/angular/sudoku_advanced/ui.gif new file mode 100644 index 00000000..cb6d1e17 Binary files /dev/null and b/examples/angular/sudoku_advanced/ui.gif differ diff --git a/examples/angular/sudoku_basic/README.md b/examples/angular/sudoku_basic/README.md index 5b322e47..25d947d7 100644 --- a/examples/angular/sudoku_basic/README.md +++ b/examples/angular/sudoku_basic/README.md @@ -1,13 +1,34 @@ -## Sudoku +# Sudoku basic -- **Backend**: `ClingoMultishotBackend` -- **Frontend**: `AngularFrontend` +This example uses the well known [sudoku puzzle](https://en.wikipedia.org/wiki/Sudoku) to showcase most basic feature of clinguin. -### Usage +## Usage + +```console +$ clinguin client-server --domain-files sudoku_basic/{encoding.lp,instance.lp} --ui-files sudoku_basic/ui.lp ``` -clinguin client-server --domain-files examples/angular/sudoku_basic/instance.lp examples/angular/sudoku_basic/encoding.lp --ui-files examples/angular/sudoku_basic/ui.lp + + + + + +## Domain Files + +```{literalinclude} ../../../examples/angular/sudoku_basic/instance.lp + :language: prolog + :caption: instance.lp ``` +```{literalinclude} ../../../examples/angular/sudoku_basic/encoding.lp + :language: prolog + :caption: encoding.lp +``` + +## UI Files + +```{literalinclude} ../../../examples/angular/sudoku_basic/ui.lp + :language: prolog + :caption: ui.lp +``` + -![](out1.png) -![](out2.png) diff --git a/examples/angular/sudoku_basic/encoding.lp b/examples/angular/sudoku_basic/encoding.lp index a4f582b4..a3c0ab47 100644 --- a/examples/angular/sudoku_basic/encoding.lp +++ b/examples/angular/sudoku_basic/encoding.lp @@ -1,5 +1,3 @@ -% %%%%%%%%%%%%%%%%%%%%%%%%% Encoding - #const dim = 3. val(1..dim*dim). diff --git a/examples/angular/sudoku_basic/instance.lp b/examples/angular/sudoku_basic/instance.lp index c4861fda..d08239ef 100644 --- a/examples/angular/sudoku_basic/instance.lp +++ b/examples/angular/sudoku_basic/instance.lp @@ -1,5 +1,3 @@ -% %%%%%%%%%%%%%%%%%%%%%%%%% Instance - initial(5,1,8). initial(6,2,7). initial(7,1,4). @@ -29,9 +27,3 @@ initial(9,6,6). initial(1,7,6). initial(5,7,7). initial(6,7,8). -% initial(8,7,9). -% initial(9,7,4). -% initial(2,8,7). -% initial(3,8,3). -% initial(4,8,6). -% initial(5,8,9). diff --git a/examples/angular/sudoku_basic/out1.png b/examples/angular/sudoku_basic/out1.png deleted file mode 100644 index 51ca8aac..00000000 Binary files a/examples/angular/sudoku_basic/out1.png and /dev/null differ diff --git a/examples/angular/sudoku_basic/out2.png b/examples/angular/sudoku_basic/out2.png deleted file mode 100644 index 3be22400..00000000 Binary files a/examples/angular/sudoku_basic/out2.png and /dev/null differ diff --git a/examples/angular/sudoku_basic/out3.png b/examples/angular/sudoku_basic/out3.png deleted file mode 100644 index 057ee200..00000000 Binary files a/examples/angular/sudoku_basic/out3.png and /dev/null differ diff --git a/examples/angular/sudoku_basic/ui.gif b/examples/angular/sudoku_basic/ui.gif new file mode 100644 index 00000000..532d1ebc Binary files /dev/null and b/examples/angular/sudoku_basic/ui.gif differ diff --git a/examples/angular/sudoku_basic/ui.lp b/examples/angular/sudoku_basic/ui.lp index 4f2c806d..cd9870eb 100644 --- a/examples/angular/sudoku_basic/ui.lp +++ b/examples/angular/sudoku_basic/ui.lp @@ -1,5 +1,6 @@ elem(window,window,root). attr(window,child_layout,grid). +attr(window,class,("justify-content-start")). elem(dd(X,Y),dropdown_menu,window):-pos(X,Y). attr(dd(X,Y),width,50):-pos(X,Y). diff --git a/examples/angular/tree_browser/README.md b/examples/angular/tree_browser/README.md index 0202bf1e..10f5a749 100644 --- a/examples/angular/tree_browser/README.md +++ b/examples/angular/tree_browser/README.md @@ -1,19 +1,36 @@ -## Tree Browser +# Tree Browser - **Backend**: `ClingraphBackend` -- **Frontend**: `AngularFrontend` -An advanced integration with clingraph where the style of the clingraph nodes is updated using the UI +An advanced integration with clingraph where the style of the clingraph nodes is updated using the UI. Notice that web browser might need to be resized to see the clingraph image. -### Usage +## Usage +```console +$ clinguin client-server --domain-files tree_browser/{encoding.lp,instance.lp} --ui-files tree_browser/ui.lp --backend=ClingraphBackend --clingraph-files tree_browser/viz.lp ``` -clinguin client-server --domain-files examples/angular/tree_browser/encoding.lp examples/angular/tree_browser/instance.lp --ui-files examples/angular/tree_browser/ui.lp --backend=ClingraphBackend --clingraph-files=examples/angular/tree_browser/viz.lp + + + + + +## Domain Files + +```{literalinclude} ../../../examples/angular/tree_browser/instance.lp + :language: prolog + :caption: instance.lp +``` +```{literalinclude} ../../../examples/angular/tree_browser/encoding.lp + :language: prolog + :caption: encoding.lp +``` + +## UI Files + +```{literalinclude} ../../../examples/angular/tree_browser/ui.lp + :language: prolog + :caption: ui.lp ``` -![](out1.png) -![](out2.png) -![](out3.png) -![](out4.png) diff --git a/examples/angular/tree_browser/out1.png b/examples/angular/tree_browser/out1.png deleted file mode 100644 index 764e8590..00000000 Binary files a/examples/angular/tree_browser/out1.png and /dev/null differ diff --git a/examples/angular/tree_browser/out2.png b/examples/angular/tree_browser/out2.png deleted file mode 100644 index d515c179..00000000 Binary files a/examples/angular/tree_browser/out2.png and /dev/null differ diff --git a/examples/angular/tree_browser/out3.png b/examples/angular/tree_browser/out3.png deleted file mode 100644 index 2396a46e..00000000 Binary files a/examples/angular/tree_browser/out3.png and /dev/null differ diff --git a/examples/angular/tree_browser/out4.png b/examples/angular/tree_browser/out4.png deleted file mode 100644 index dd2db67e..00000000 Binary files a/examples/angular/tree_browser/out4.png and /dev/null differ diff --git a/examples/angular/tree_browser/ui.gif b/examples/angular/tree_browser/ui.gif new file mode 100644 index 00000000..d2615c9d Binary files /dev/null and b/examples/angular/tree_browser/ui.gif differ diff --git a/examples/angular/tree_browser/ui.lp b/examples/angular/tree_browser/ui.lp index 0fc37972..cec42bda 100644 --- a/examples/angular/tree_browser/ui.lp +++ b/examples/angular/tree_browser/ui.lp @@ -36,8 +36,8 @@ when(window, load, context, (X,open)):- _clinguin_context(X,open). elem(b1, button, c1). - when(b1, click, context, (_context_value(t1_content),open)). - when(b1, click, call, (add_atom(parent(_context_value(selected_node),_context_value(t1_content))))). + when(b1, click, context, (_context_value(t1_content,str),open)). + when(b1, click, call, (add_atom(parent(_context_value(selected_node,str),_context_value(t1_content,str))))). attr(b1, label, "Add"). attr(b1, class, "m-1"). attr(b1, class, "btn-sm"). @@ -48,7 +48,7 @@ when(window, load, context, (X,open)):- _clinguin_context(X,open). attr(t1, placeholder, "Group name"). attr(t1, width, 250). when(t1, input, context, (t1_content, _value)). - + %%%%%%%%%%%%%%%%%%%%%%%% % Context menu @@ -65,7 +65,7 @@ when(window, load, context, (X,open)):- _clinguin_context(X,open). attr(c, order, 2). attr(c, width, 200). attr(c, image_type, clingraph). - + elem(e(E), svg_edge, c) :- edge(E). attr(e(E), clingraph_id, E) :- edge(E). @@ -92,4 +92,4 @@ when(window, load, context, (X,open)):- _clinguin_context(X,open). elem(menu_bar_download, button, menu_bar). attr(menu_bar_download, label, "Save"). attr(menu_bar_download, icon, "fa-save"). - when(menu_bar_download, click, call, download("#show parent/2. #show root/1.","examples/angular/tree_browser/instance.lp")). \ No newline at end of file + when(menu_bar_download, click, call, download("#show parent/2. #show root/1.","tree_browser/instance.lp")). \ No newline at end of file diff --git a/examples/test/test_00/README.md b/examples/test/test_00/README.md index 03e30d4f..7859564f 100644 --- a/examples/test/test_00/README.md +++ b/examples/test/test_00/README.md @@ -1,6 +1,6 @@ ## Test 00 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_01/README.md b/examples/test/test_01/README.md index a8f6f8c9..d15488f4 100644 --- a/examples/test/test_01/README.md +++ b/examples/test/test_01/README.md @@ -1,6 +1,6 @@ ## Test 01 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_02/README.md b/examples/test/test_02/README.md index 57b544a7..d4d411e0 100644 --- a/examples/test/test_02/README.md +++ b/examples/test/test_02/README.md @@ -1,6 +1,6 @@ ## Test 02 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_03/README.md b/examples/test/test_03/README.md index 6fced372..e0d97fba 100644 --- a/examples/test/test_03/README.md +++ b/examples/test/test_03/README.md @@ -1,6 +1,6 @@ ## Test 03 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_04/README.md b/examples/test/test_04/README.md index ef621ebf..1c7b4c62 100644 --- a/examples/test/test_04/README.md +++ b/examples/test/test_04/README.md @@ -1,6 +1,6 @@ ## Test 04 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_05/README.md b/examples/test/test_05/README.md index c7543b7c..16cb9226 100644 --- a/examples/test/test_05/README.md +++ b/examples/test/test_05/README.md @@ -1,6 +1,6 @@ ## Test 05 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_06/README.md b/examples/test/test_06/README.md index 6154c75c..7544c84c 100644 --- a/examples/test/test_06/README.md +++ b/examples/test/test_06/README.md @@ -1,6 +1,6 @@ ## Test 06 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_07/README.md b/examples/test/test_07/README.md index 35078128..910a482b 100644 --- a/examples/test/test_07/README.md +++ b/examples/test/test_07/README.md @@ -1,6 +1,6 @@ ## Test 07 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` Loads an image in the UI. Note that tkinter loads the image from the path in this configuration, therefore client and server must have access to local files diff --git a/examples/test/test_08/README.md b/examples/test/test_08/README.md index cf90bb58..9a51afdc 100644 --- a/examples/test/test_08/README.md +++ b/examples/test/test_08/README.md @@ -1,6 +1,6 @@ ## Test 08 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` This example is supposed to open several alerts in the system. diff --git a/examples/test/test_09/README.md b/examples/test/test_09/README.md index 450038ee..601badde 100644 --- a/examples/test/test_09/README.md +++ b/examples/test/test_09/README.md @@ -1,6 +1,6 @@ ## Test 09 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_10/README.md b/examples/test/test_10/README.md index 778c2235..5b6fc206 100644 --- a/examples/test/test_10/README.md +++ b/examples/test/test_10/README.md @@ -1,6 +1,6 @@ ## Test 10 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_11/README.md b/examples/test/test_11/README.md index 790bfe9d..11201c4b 100644 --- a/examples/test/test_11/README.md +++ b/examples/test/test_11/README.md @@ -1,6 +1,6 @@ ## Test 11 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/test/test_12/README.md b/examples/test/test_12/README.md index 4ac15723..2658a227 100644 --- a/examples/test/test_12/README.md +++ b/examples/test/test_12/README.md @@ -1,6 +1,6 @@ ## Test 12 -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `Angular` ### Usage diff --git a/examples/tkinter/button/README.md b/examples/tkinter/button/README.md index ac1ee302..fbe503eb 100644 --- a/examples/tkinter/button/README.md +++ b/examples/tkinter/button/README.md @@ -1,6 +1,6 @@ ## Housing -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/examples/tkinter/housing/README.md b/examples/tkinter/housing/README.md index 0bfc2624..b97d07fa 100644 --- a/examples/tkinter/housing/README.md +++ b/examples/tkinter/housing/README.md @@ -1,6 +1,6 @@ ## Housing -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` You must select the people and then divide into rooms. diff --git a/examples/tkinter/study_regulations/README.md b/examples/tkinter/study_regulations/README.md index 553aa138..41a34995 100644 --- a/examples/tkinter/study_regulations/README.md +++ b/examples/tkinter/study_regulations/README.md @@ -1,6 +1,6 @@ ## Study regulations -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` Create a study plan. diff --git a/examples/tkinter/sudoku/README.md b/examples/tkinter/sudoku/README.md index b1f2d027..7d094be0 100644 --- a/examples/tkinter/sudoku/README.md +++ b/examples/tkinter/sudoku/README.md @@ -1,6 +1,6 @@ ## Sudoku -- **Backend**: `ClingoMultishotBackend` +- **Backend**: `ClingoBackend` - **Frontend**: `TkinterFrontend` ### Usage diff --git a/setup.cfg b/setup.cfg index 8cf82564..cf6ab092 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = clinguin -version = 1.0.24 +version = 1.0.27 author = Alexander Beiser, Susana Hahn (Potassco) author_email = alexl.id.at@gmail.com, hahnmartin@uni-potsdam.de description = An interactive visualizer for clingo diff --git a/tests/reference_json_output/health.py b/tests/reference_json_output/health.py index ef8daee9..cc5dd54f 100644 --- a/tests/reference_json_output/health.py +++ b/tests/reference_json_output/health.py @@ -6,7 +6,7 @@ class Health: def get_reference_json(cls): json_dict = { "name": "clinguin", - "version": "1.0.24", + "version": "1.0.27", "description": "An interactive visualizer for clingo", } diff --git a/tests/utils_test_utils.py b/tests/utils_test_utils.py index d71cb74b..45704c46 100644 --- a/tests/utils_test_utils.py +++ b/tests/utils_test_utils.py @@ -8,8 +8,8 @@ from clinguin import args_to_dict_converter from clinguin.parse_input import ArgumentParser -from clinguin.server.application.backends.clingo_multishot_backend import ( - ClingoMultishotBackend, +from clinguin.server.application.backends.clingo_backend import ( + ClingoBackend, ) @@ -136,7 +136,7 @@ def instantiate_backend(self, test_method): self.args = args_copy - return ClingoMultishotBackend(args_copy) + return ClingoBackend(args_copy) @classmethod def assert_result(self, should_output, received_by_request):