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.