On Anti-Subsumptive Knowledge Enforcement
Information
The anti-subsumptive enforcement of a clause δ in a
set of clauses Δ consists in extracting one
cardinality-maximal satisfiable subset Δ' of
Δ∪{δ} that contains δ but that does
not strictly subsume δ. The computational issues of
this problem are investigated in the Boolean framework.
Especially, the minimal change policy that requires a
minimal number of clauses to be dropped from Δ can
lead to an exponential computational blow-up. Indeed, a
direct and natural approach to anti-subsumptive
enforcement requires the computation of all
inclusion-maximal subsets of Δ∪{δ} that, at
the same time, contain δ and are satisfiable with
¬δj where δj is some strict sub-clause of
δ. On the contrary, we propose a method that avoids
the computation of this possibly exponential number of
subsets of clauses. Interestingly, it requires only one
single call to a Partial-Max-SAT procedure and appears
tractable in many realistic situations, even for very large
Δ. Moreover, the approach is easily extended to take
into account a preference pre-ordering between formulas and
lay the foundations for the practical enumeration of all
optimal solutions to the problem of making δ
subsumption-free in Δ under a minimal change policy.
This web page contains:
Here is how to compute one anti-subsumptive enforcement
Let BENCHMARK be a CNF instance, which must conform to the
standard DIMACS format.
Let QUERY a text file where is reported (on a same line) a
set of literal representing a clause δ.
This following command lines compute w.r.t. a clause δ
(given in the file QUERY) and a formula Δ (given in the
file BENCHMARK) one anti-subsumptive enforcement of δ in
Δ
This
combination executes naive approach:
$ ./transformedApproach BENCHMARK QUERY -naive > TMP_FILE_NAIVE
$ ./executeNaive.sh TMP_FILE_NAIVE
Remark: The set clauses that has to removed to
ensure the anti-subsumptive, is a hitting set on all the set
of MCSes return by the procedure executeNaive.sh.
This
combination executes the transformational appraoch:
$ ./transformedApproach BENCHMARK QUERY > TMP_FILE_TRANSFORMED
$ ./executeMin.sh TMP_FILE_TRANSFORMED
Remark: The set clauses that has to removed to
ensure the anti-subsumptive, is compute with respect to
the model returns by the procedure executeMin.sh. More
precisely, the problem becomes anti-subsumptive free when
all the clause falsified by this one are removed.