SAT / SMT求解器中的变量消除

时间:2012-09-13 22:08:46

标签: z3 smt

在SMT / SAT求解中,是否有一些技术可以从公式中确定无关变量?即,那些可以具有任何价值且不影响公式的可满足性的那些。

1 个答案:

答案 0 :(得分:2)

对于命题满足的情况,其中公式是条款的结合,每个条款是文字的分离。例如(A | B) & (!B | A) & (!A | B | A)

如果变量在整个公式中仅显示为正文字或仅显示为负文字,则可以安全地删除它,并且可以删除它出现的任何条款并将其视为满足。但从严格意义上讲,这样一个变量的值并不是无关紧要的,因为它可能是唯一能满足某些公式令人满意的赋值条款的变量。这些变量称为纯变量,这个阶段称为纯文字消除。

在纯文字消除之前,应该清除公式,以便删除任何包含一个看起来未被否定和否定的变量的子句。这可能导致一些变量变得纯粹。此外,在整个解决方案过程中,当变量被识别为纯粹时,应该将其消除。

e.g。条款(!A | B | A)非常满足:无论A取得什么价值,都会满足。

然后(A | B) & (!B | A) & (!A | B | A) - > (A | B) & (!B | A)

现在A是纯的,可以设置为True,从而找到令人满意的赋值。请注意,无需做出任何决定即可找到解决方案,我们只需应用两条规则。