kodkod.engine.ucore
Class CRRStrategy

java.lang.Object
  extended by kodkod.engine.ucore.CRRStrategy
All Implemented Interfaces:
ReductionStrategy

public final class CRRStrategy
extends java.lang.Object
implements ReductionStrategy

A basic implementation of the Complete ResolutionTrace Refutation algorithm for for producing locally minimal cores. An unsatisfiable core is locally minimal iff removing any single clause from the core will make the resulting formula satisfiable. No heuristic is used to pick the clauses to be excluded from the core.

Author:
Emina Torlak
See Also:
N. Dershowitz, Z. Hanna, and A. Nadel. A scalable algorithm for minimal unsatisfiable core extraction. In Proceedings of Ninth International Conference on Theory and Applications of Satisfiability Testing (SAT '06). 2006.
invariant:
traces.ResolutionTrace = nexts.Set
all i: [1..) | some traces[i] => some traces[i-1]
all i: [0..#nexts) | nexts[i] in traces[i].conflict.^antecedents
no disj i,j: [0..#nexts) | traces[i] = traces[j] && nexts[i] = nexts[j]
specfield:
traces: [0..)->ResolutionTrace
nexts: [0..)->Set

Constructor Summary
CRRStrategy()
          Constructs a new instance of CRRStrategy.
 
Method Summary
 IntSet next(ResolutionTrace trace)
          Returns the next subset of clauses in the given trace to be analyzed.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CRRStrategy

public CRRStrategy()
Constructs a new instance of CRRStrategy.

effects:
no this.traces' and no this.nexts'
Method Detail

next

public final IntSet next(ResolutionTrace trace)
Returns the next subset of clauses in the given trace to be analyzed.

Specified by:
next in interface ReductionStrategy
Returns:
last(this.nexts')
effects:
{@inheritDoc}
requires:
{@inheritDoc}