Equisatisfiability

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In mathematical logic (a subtopic within the field of formal logic), two formulae are equisatisfiable if the first formula is satisfiable whenever the second is and vice versa; in other words, either both formulae are satisfiable or neither is.[1]The truth values of two equisatisfiable formulae may nevertheless disagree for a particular assignment of variables. As a result, equisatisfiability differs from logical equivalence, since two equivalent formulae always have the same models, whereas equisatisfiable ones need only share satisfiability status. More formally, the equisatisfiability meta formula f is true if either the two subformulae are both satisfiable or if they both are not:[2]

f(Sat(ϕ)Sat(ψ))(¬Sat(ϕ)¬Sat(ψ))Sat(ϕ)Sat(ψ)

Equisatisfiability is generally used in the context of translating formulae, so that one can define a translation to be correct if the original and resulting formulae are equisatisfiable. Examples of translations that preserve equisatisfiability are Skolemization and some translations into conjunctive normal form such as the Tseytin transformation.

Examples

[edit | edit source]

A translation from propositional logic into propositional logic in which every binary disjunction ab is replaced by (an)(¬nb), where n is a fresh variable (one for each replaced disjunction) is a transformation in which satisfiability is preserved: the original and resulting formulae are equisatisfiable. These two formulae are not equivalent: the first formula has the model in which b is true while a and n are false (the model's truth value for n being irrelevant to the truth value of the formula), but this is not a model of the second formula, in which n has to be true when a is false.

References

[edit | edit source]
  1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).