We provide a high-level (second-order) interface to
sat-to-sat
in order to relieve users of manually encoding
sat-to-sat instances.
The language of this interface is closely related to the IDP language, i.e., it is an ASCII representation of second-order theories (see the table below for logical connectives available).
| Logic | SAT-to-SAT |
|---|---|
| ∀ | ! |
| ∃ | ? |
| ∧ | & |
| ∨ | | |
| ⇒ | => |
| ⇐ | <= |
| ⇔ | <=> |
| ¬ | ~ |
For example, an expression of the form
! X: in_node(X) => reach(X).
expresses that each node must be reachable. Furthermore, our tool (currently) makes the following assumptions about the input:
in_".
!X: reach(X). ! X: in_node(X) => reach(X). ! X: ~in_node(X) | reach(X). ! X: reach(X) | ~in_node(X). X is bound by the input-predicate
in_node/1.
.".
The tool so2grounder (R1068, available
here for download)
takes two arguments as input:
$ so2grounder instances/argumentation/DC-CO ./my_dir
This will create several files in the directory my_dir.
One of those files is called "run.sh".
The tool so2grounder creates a grounder that
transforms an instance into a SAT-to-SAT specification. Hence, in
order to actually do something with the output
of so2grounder, we need an instance file that consists of
a set of facts (logic programming-style) interpreting all
input-predicates. I.e., a set of facts of the form
in_pred(args).
Generating the actual SAT-to-SAT instance is done by the following command
bash my_dir/run.sh link.sh instance.lp
where:
gringo
and
satgrnd
are available somewhere in your path.
The output of this command can be piped directly to sat-to-sat.
We provide some example files for the second-order interface of SAT-to-SAT.