Propositional model enumeration, or All-SAT, is the task to record all models of a propositional formula. It is a key task in software and hardware verification, system engineering, and predicate abstraction, to mention a few. It also provides a means to convert a CNF formula into DNF, which is relevant in circuit design. While in some applications enumerating models multiple times causes no harm, in others avoiding repetitions is crucial. We therefore present two model enumeration algorithms, which adopt dual reasoning in order to shorten the found models. The first method enumerates pairwise contradicting models. Repetitions are avoided by the use of so-called blocking clauses, for which we provide a dual encoding. In our second approach we relax the uniqueness constraint. We present an adaptation of the standard conflict-driven clause learning procedure to support model enumeration without blocking clauses.Our procedures are expressed by means of a calculus and proofs of correctness are provided.
翻译:“全半径终端”是记录所有假设公式模式的任务。它是软件和硬件核查、系统工程和上游抽象学方面的关键任务,仅举几例。它也提供了一种将CNF公式转换成DNF的方法,这与电路设计有关。虽然在某些应用中多次列举模型并不造成伤害,但在另一些应用中避免重复至关重要。因此,我们提出了两种示范查点算法,采用双重推理来缩短发现模型。第一种方法列举了相矛盾的模式。通过使用所谓的封存条款避免了竞争,我们提供了双重编码。在第二种方法中,我们放松了独有性限制。我们介绍了标准冲突驱动条款学习程序,以支持模型的查点,而没有屏蔽条款。我们的程序是通过计算和提供正确性的证据来表达的。