formal methods in software development - propositional ... · formalmethodsinsoftwaredevelopment...
TRANSCRIPT
Formal Methods in Software DevelopmentPropositional Logic on Examples
Mădălina Eraşcu
West University of TimişoaraFaculty of Mathematics and Informatics
Department of Computer Science
Based on slides of the lecture Satisfiability Checking (Erika Ábrahám), RTWH Aachen
WS 2019/2020
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 1 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0
0
0 0 1
0
0 1 0
0
0 1 1
0
1 0 0
0
1 0 1
1
1 1 0
0
1 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0
0
0 0 1
0
0 1 0
0
0 1 1
0
1 0 0
0
1 0 1
1
1 1 0
0
1 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0 00 0 1
0
0 1 0
0
0 1 1
0
1 0 0
0
1 0 1
1
1 1 0
0
1 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0 00 0 1 00 1 0
0
0 1 1
0
1 0 0
0
1 0 1
1
1 1 0
0
1 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0 00 0 1 00 1 0 00 1 1
0
1 0 0
0
1 0 1
1
1 1 0
0
1 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0 00 0 1 00 1 0 00 1 1 01 0 0
0
1 0 1
1
1 1 0
0
1 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0 00 0 1 00 1 0 00 1 1 01 0 0 01 0 1
1
1 1 0
0
1 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0 00 0 1 00 1 0 00 1 1 01 0 0 01 0 1 11 1 0
0
1 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0 00 0 1 00 1 0 00 1 1 01 0 0 01 0 1 11 1 0 01 1 1
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with truth table
Example formula:
φ := ¬(a→ (b ∨ ¬c))
a b c ¬(a→ (b ∨ ¬c))0 0 0 00 0 1 00 1 0 00 1 1 01 0 0 01 0 1 11 1 0 01 1 1 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 2 / 10
Satisfiability with semantical algorithm
Eval(α, p) = α(p)Eval(α,¬A) = ¬Eval(α,A)Eval(α,A ∨ B) = Eval(α,A) ∨ Eval(α,B)Eval(α,A ∧ B) = Eval(α,A) ∧ Eval(α,B)Eval(α,A→ B) = Eval(α,¬A) ∨ Eval(α,B)Eval(α,A↔ B) = Eval(α,A→ B) ∧ Eval(α,A← B)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 3 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) =
¬Eval(α, a→ (b ∨ ¬c))Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)
Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:
Eval(α,¬(a→ (b ∨ ¬c))) =
¬Eval(α, a→ (b ∨ ¬c))Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)
Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) =
¬Eval(α, a→ (b ∨ ¬c))Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)
Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) =
Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)
Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) =
¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) =
1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1
Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) =
Eval(α, b) ∨ Eval(α,¬c))Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) =
0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0
Eval(α,¬c) = ¬Eval(α, c) = 1Eval(α, b ∨ ¬c) = 1
Eval(α, a→ (b ∨ ¬c)) = 1Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) =
¬Eval(α, c) = 1Eval(α, b ∨ ¬c) = 1
Eval(α, a→ (b ∨ ¬c)) = 1Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) =
1Eval(α, b ∨ ¬c) = 1
Eval(α, a→ (b ∨ ¬c)) = 1Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) =
1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1
Eval(α, a→ (b ∨ ¬c)) = 1Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) =
1Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) =
0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
Satisfiability with semantical algorithm
Example formula:
φ := ¬(a→ (b ∨ ¬c))
α : a = 0, b = 0, c = 0:Eval(α,¬(a→ (b ∨ ¬c))) = ¬Eval(α, a→ (b ∨ ¬c))
Eval(α, a→ (b ∨ ¬c)) = Eval(α,¬a) ∨ Eval(α, b ∨ ¬c)Eval(α,¬a) = ¬Eval(α, a) = 1Eval(α, b ∨ ¬c) = Eval(α, b) ∨ Eval(α,¬c))
Eval(α, b) = 0Eval(α,¬c) = ¬Eval(α, c) = 1
Eval(α, b ∨ ¬c) = 1Eval(α, a→ (b ∨ ¬c)) = 1
Eval(α,¬(a→ (b ∨ ¬c))) = 0
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 4 / 10
NNF conversion
Only operators ¬,∨,∧, negation only in front of atomic propositions.
Example formula:
φ := ¬(a→ (b ∨ ¬c))
¬(a→(b ∨ ¬c))= ¬(¬a ∨ (b ∨ ¬c))= ¬(¬a ∨ b ∨ ¬c)= a ∧ ¬b ∧ c
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 5 / 10
NNF conversion
Only operators ¬,∨,∧, negation only in front of atomic propositions.
Example formula:
φ := ¬(a→ (b ∨ ¬c))
¬(a→(b ∨ ¬c))
= ¬(¬a ∨ (b ∨ ¬c))= ¬(¬a ∨ b ∨ ¬c)= a ∧ ¬b ∧ c
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 5 / 10
NNF conversion
Only operators ¬,∨,∧, negation only in front of atomic propositions.
Example formula:
φ := ¬(a→ (b ∨ ¬c))
¬(a→(b ∨ ¬c))= ¬(¬a ∨ (b ∨ ¬c))
= ¬(¬a ∨ b ∨ ¬c)= a ∧ ¬b ∧ c
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 5 / 10
NNF conversion
Only operators ¬,∨,∧, negation only in front of atomic propositions.
Example formula:
φ := ¬(a→ (b ∨ ¬c))
¬(a→(b ∨ ¬c))= ¬(¬a ∨ (b ∨ ¬c))= ¬(¬a ∨ b ∨ ¬c)
= a ∧ ¬b ∧ c
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 5 / 10
NNF conversion
Only operators ¬,∨,∧, negation only in front of atomic propositions.
Example formula:
φ := ¬(a→ (b ∨ ¬c))
¬(a→(b ∨ ¬c))= ¬(¬a ∨ (b ∨ ¬c))= ¬(¬a ∨ b ∨ ¬c)= a ∧ ¬b ∧ c
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 5 / 10
CNF conversion: The exponential way
CNF: ∧i=1,...,n ∨j=1,...,m lij
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
(a ∧ b)∨(¬c ∧ (d ∨ e))= (a ∨ (¬c∧(d ∨ e))) ∧ (b ∨ (¬c∧(d ∨ e)))= (a ∨ (¬c∧d) ∨ (¬c ∧ e)) ∧ (b ∨ (¬c∧d) ∨ (¬c ∧ e))= (a ∨ ¬c ∨ (¬c∧e)) ∧ (a ∨ d ∨ (¬c∧e))∧
(b ∨ ¬c ∨ (¬c∧e)) ∧ (b ∨ d ∨ (¬c∧e))= (a ∨ ¬c ∨ ¬c) ∧ (a ∨ ¬c ∨ e) ∧ (a ∨ d ∨ ¬c) ∧ (a ∨ d ∨ e)∧
(b ∨ ¬c ∨ ¬c) ∧ (b ∨ ¬c ∨ e) ∧ (b ∨ d ∨ ¬c) ∧ (b ∨ d ∨ e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 6 / 10
CNF conversion: The exponential way
CNF: ∧i=1,...,n ∨j=1,...,m lij
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
(a ∧ b)∨(¬c ∧ (d ∨ e))= (a ∨ (¬c∧(d ∨ e))) ∧ (b ∨ (¬c∧(d ∨ e)))= (a ∨ (¬c∧d) ∨ (¬c ∧ e)) ∧ (b ∨ (¬c∧d) ∨ (¬c ∧ e))= (a ∨ ¬c ∨ (¬c∧e)) ∧ (a ∨ d ∨ (¬c∧e))∧
(b ∨ ¬c ∨ (¬c∧e)) ∧ (b ∨ d ∨ (¬c∧e))= (a ∨ ¬c ∨ ¬c) ∧ (a ∨ ¬c ∨ e) ∧ (a ∨ d ∨ ¬c) ∧ (a ∨ d ∨ e)∧
(b ∨ ¬c ∨ ¬c) ∧ (b ∨ ¬c ∨ e) ∧ (b ∨ d ∨ ¬c) ∧ (b ∨ d ∨ e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 6 / 10
CNF conversion: The exponential way
CNF: ∧i=1,...,n ∨j=1,...,m lij
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
(a ∧ b)∨(¬c ∧ (d ∨ e))= (a ∨ (¬c∧(d ∨ e))) ∧ (b ∨ (¬c∧(d ∨ e)))= (a ∨ (¬c∧d) ∨ (¬c ∧ e)) ∧ (b ∨ (¬c∧d) ∨ (¬c ∧ e))= (a ∨ ¬c ∨ (¬c∧e)) ∧ (a ∨ d ∨ (¬c∧e))∧
(b ∨ ¬c ∨ (¬c∧e)) ∧ (b ∨ d ∨ (¬c∧e))= (a ∨ ¬c ∨ ¬c) ∧ (a ∨ ¬c ∨ e) ∧ (a ∨ d ∨ ¬c) ∧ (a ∨ d ∨ e)∧
(b ∨ ¬c ∨ ¬c) ∧ (b ∨ ¬c ∨ e) ∧ (b ∨ d ∨ ¬c) ∧ (b ∨ d ∨ e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 6 / 10
CNF conversion: The exponential way
CNF: ∧i=1,...,n ∨j=1,...,m lij
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
(a ∧ b)∨(¬c ∧ (d ∨ e))= (a ∨ (¬c∧(d ∨ e))) ∧ (b ∨ (¬c∧(d ∨ e)))= (a ∨ (¬c∧d) ∨ (¬c ∧ e)) ∧ (b ∨ (¬c∧d) ∨ (¬c ∧ e))= (a ∨ ¬c ∨ (¬c∧e)) ∧ (a ∨ d ∨ (¬c∧e))∧
(b ∨ ¬c ∨ (¬c∧e)) ∧ (b ∨ d ∨ (¬c∧e))= (a ∨ ¬c ∨ ¬c) ∧ (a ∨ ¬c ∨ e) ∧ (a ∨ d ∨ ¬c) ∧ (a ∨ d ∨ e)∧
(b ∨ ¬c ∨ ¬c) ∧ (b ∨ ¬c ∨ e) ∧ (b ∨ d ∨ ¬c) ∧ (b ∨ d ∨ e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 6 / 10
CNF conversion: The exponential way
CNF: ∧i=1,...,n ∨j=1,...,m lij
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
(a ∧ b)∨(¬c ∧ (d ∨ e))= (a ∨ (¬c∧(d ∨ e))) ∧ (b ∨ (¬c∧(d ∨ e)))= (a ∨ (¬c∧d) ∨ (¬c ∧ e)) ∧ (b ∨ (¬c∧d) ∨ (¬c ∧ e))= (a ∨ ¬c ∨ (¬c∧e)) ∧ (a ∨ d ∨ (¬c∧e))∧
(b ∨ ¬c ∨ (¬c∧e)) ∧ (b ∨ d ∨ (¬c∧e))= (a ∨ ¬c ∨ ¬c) ∧ (a ∨ ¬c ∨ e) ∧ (a ∨ d ∨ ¬c) ∧ (a ∨ d ∨ e)∧
(b ∨ ¬c ∨ ¬c) ∧ (b ∨ ¬c ∨ e) ∧ (b ∨ d ∨ ¬c) ∧ (b ∨ d ∨ e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 6 / 10
CNF conversion: Tseitin’s encoding
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
a1 ↔ (a2 ∨ a3)
a2 ↔ (a ∧ b)
a3 ↔ (¬c ∧ a4)
a4 ↔ (d ∨ e)
a1
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 7 / 10
CNF conversion: Tseitin’s encoding
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
a1 ↔ (a2 ∨ a3)
a2 ↔ (a ∧ b)
a3 ↔ (¬c ∧ a4)
a4 ↔ (d ∨ e)
a1
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 7 / 10
CNF conversion: Tseitin’s encoding
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
a1 ↔ (a2 ∨ a3)
a2 ↔ (a ∧ b)
a3 ↔ (¬c ∧ a4)
a4 ↔ (d ∨ e)
a1
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 7 / 10
CNF conversion: Tseitin’s encoding
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
a1 ↔ (a2 ∨ a3)
a2 ↔ (a ∧ b)
a3 ↔ (¬c ∧ a4)
a4 ↔ (d ∨ e)
a1
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 7 / 10
CNF conversion: Tseitin’s encoding
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
a1 ↔ (a2 ∨ a3)
a2 ↔ (a ∧ b)
a3 ↔ (¬c ∧ a4)
a4 ↔ (d ∨ e)
a1
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 7 / 10
CNF conversion: Tseitin’s encoding
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
a1 ↔ (a2 ∨ a3)
a2 ↔ (a ∧ b)
a3 ↔ (¬c ∧ a4)
a4 ↔ (d ∨ e)
a1
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 7 / 10
CNF conversion: Tseitin’s encoding
Example formula:
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
a1 ↔ (a2 ∨ a3)
a2 ↔ (a ∧ b)
a3 ↔ (¬c ∧ a4)
a4 ↔ (d ∨ e)
a1
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 7 / 10
CNF conversion: Tseitin’s encoding
In the previous formula, we have the following templates:
1 h↔(p1 ∨ p2)
= (h→(p1 ∨ p2)) ∧ (h←(p1 ∨ p2))= (¬h ∨ (p1 ∨ p2)) ∧ (h ∨ ¬(p1 ∨ p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ (¬p1 ∧ ¬p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)
2 h↔(p1 ∧ p2)
= (h→(p1 ∧ p2)) ∧ (h←(p1 ∧ p2))= (¬h ∨ (p1 ∧ p2)) ∧ (h ∨ ¬(p1 ∧ p2))= (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 8 / 10
CNF conversion: Tseitin’s encoding
In the previous formula, we have the following templates:
1 h↔(p1 ∨ p2)= (h→(p1 ∨ p2)) ∧ (h←(p1 ∨ p2))
= (¬h ∨ (p1 ∨ p2)) ∧ (h ∨ ¬(p1 ∨ p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ (¬p1 ∧ ¬p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)
2 h↔(p1 ∧ p2)
= (h→(p1 ∧ p2)) ∧ (h←(p1 ∧ p2))= (¬h ∨ (p1 ∧ p2)) ∧ (h ∨ ¬(p1 ∧ p2))= (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 8 / 10
CNF conversion: Tseitin’s encoding
In the previous formula, we have the following templates:
1 h↔(p1 ∨ p2)= (h→(p1 ∨ p2)) ∧ (h←(p1 ∨ p2))= (¬h ∨ (p1 ∨ p2)) ∧ (h ∨ ¬(p1 ∨ p2))
= (¬h ∨ p1 ∨ p2) ∧ (h ∨ (¬p1 ∧ ¬p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)
2 h↔(p1 ∧ p2)
= (h→(p1 ∧ p2)) ∧ (h←(p1 ∧ p2))= (¬h ∨ (p1 ∧ p2)) ∧ (h ∨ ¬(p1 ∧ p2))= (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 8 / 10
CNF conversion: Tseitin’s encoding
In the previous formula, we have the following templates:
1 h↔(p1 ∨ p2)= (h→(p1 ∨ p2)) ∧ (h←(p1 ∨ p2))= (¬h ∨ (p1 ∨ p2)) ∧ (h ∨ ¬(p1 ∨ p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ (¬p1 ∧ ¬p2))
= (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)
2 h↔(p1 ∧ p2)
= (h→(p1 ∧ p2)) ∧ (h←(p1 ∧ p2))= (¬h ∨ (p1 ∧ p2)) ∧ (h ∨ ¬(p1 ∧ p2))= (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 8 / 10
CNF conversion: Tseitin’s encoding
In the previous formula, we have the following templates:
1 h↔(p1 ∨ p2)= (h→(p1 ∨ p2)) ∧ (h←(p1 ∨ p2))= (¬h ∨ (p1 ∨ p2)) ∧ (h ∨ ¬(p1 ∨ p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ (¬p1 ∧ ¬p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)
2 h↔(p1 ∧ p2)
= (h→(p1 ∧ p2)) ∧ (h←(p1 ∧ p2))= (¬h ∨ (p1 ∧ p2)) ∧ (h ∨ ¬(p1 ∧ p2))= (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 8 / 10
CNF conversion: Tseitin’s encoding
In the previous formula, we have the following templates:
1 h↔(p1 ∨ p2)= (h→(p1 ∨ p2)) ∧ (h←(p1 ∨ p2))= (¬h ∨ (p1 ∨ p2)) ∧ (h ∨ ¬(p1 ∨ p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ (¬p1 ∧ ¬p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)
2 h↔(p1 ∧ p2)= (h→(p1 ∧ p2)) ∧ (h←(p1 ∧ p2))
= (¬h ∨ (p1 ∧ p2)) ∧ (h ∨ ¬(p1 ∧ p2))= (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 8 / 10
CNF conversion: Tseitin’s encoding
In the previous formula, we have the following templates:
1 h↔(p1 ∨ p2)= (h→(p1 ∨ p2)) ∧ (h←(p1 ∨ p2))= (¬h ∨ (p1 ∨ p2)) ∧ (h ∨ ¬(p1 ∨ p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ (¬p1 ∧ ¬p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)
2 h↔(p1 ∧ p2)= (h→(p1 ∧ p2)) ∧ (h←(p1 ∧ p2))= (¬h ∨ (p1 ∧ p2)) ∧ (h ∨ ¬(p1 ∧ p2))
= (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 8 / 10
CNF conversion: Tseitin’s encoding
In the previous formula, we have the following templates:
1 h↔(p1 ∨ p2)= (h→(p1 ∨ p2)) ∧ (h←(p1 ∨ p2))= (¬h ∨ (p1 ∨ p2)) ∧ (h ∨ ¬(p1 ∨ p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ (¬p1 ∧ ¬p2))= (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)
2 h↔(p1 ∧ p2)= (h→(p1 ∧ p2)) ∧ (h←(p1 ∧ p2))= (¬h ∨ (p1 ∧ p2)) ∧ (h ∨ ¬(p1 ∧ p2))= (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 8 / 10
CNF conversion: Tseitin’s encoding
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
h↔ (p1 ∨ p2) = (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)h↔ (p1 ∧ p2) = (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
a1 ↔ (a2 ∨ a3) =
(¬a1 ∨ a2 ∨ a3) ∧(a1 ∨ ¬a2) ∧(a1 ∨ ¬a3)
a2 ↔ (a ∧ b) =
(¬a2 ∨ a) ∧(¬a2 ∨ b) ∧(a2 ∨ ¬a ∨ ¬b)
a3 ↔ (¬c ∧ a4) =
(¬a3 ∨ ¬c) ∧(¬a3 ∨ a4) ∧(a3 ∨ c ∨ ¬a4)
a4 ↔ (d ∨ e) =
(¬a4 ∨ d ∨ e) ∧(a4 ∨ ¬d) ∧(a4 ∨ ¬e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 9 / 10
CNF conversion: Tseitin’s encoding
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
h↔ (p1 ∨ p2) = (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)h↔ (p1 ∧ p2) = (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
a1 ↔ (a2 ∨ a3) = (¬a1 ∨ a2 ∨ a3) ∧(a1 ∨ ¬a2) ∧(a1 ∨ ¬a3)a2 ↔ (a ∧ b) =
(¬a2 ∨ a) ∧(¬a2 ∨ b) ∧(a2 ∨ ¬a ∨ ¬b)
a3 ↔ (¬c ∧ a4) =
(¬a3 ∨ ¬c) ∧(¬a3 ∨ a4) ∧(a3 ∨ c ∨ ¬a4)
a4 ↔ (d ∨ e) =
(¬a4 ∨ d ∨ e) ∧(a4 ∨ ¬d) ∧(a4 ∨ ¬e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 9 / 10
CNF conversion: Tseitin’s encoding
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
h↔ (p1 ∨ p2) = (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)h↔ (p1 ∧ p2) = (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
a1 ↔ (a2 ∨ a3) = (¬a1 ∨ a2 ∨ a3) ∧(a1 ∨ ¬a2) ∧(a1 ∨ ¬a3)a2 ↔ (a ∧ b) = (¬a2 ∨ a) ∧(¬a2 ∨ b) ∧(a2 ∨ ¬a ∨ ¬b)a3 ↔ (¬c ∧ a4) =
(¬a3 ∨ ¬c) ∧(¬a3 ∨ a4) ∧(a3 ∨ c ∨ ¬a4)
a4 ↔ (d ∨ e) =
(¬a4 ∨ d ∨ e) ∧(a4 ∨ ¬d) ∧(a4 ∨ ¬e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 9 / 10
CNF conversion: Tseitin’s encoding
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
h↔ (p1 ∨ p2) = (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)h↔ (p1 ∧ p2) = (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
a1 ↔ (a2 ∨ a3) = (¬a1 ∨ a2 ∨ a3) ∧(a1 ∨ ¬a2) ∧(a1 ∨ ¬a3)a2 ↔ (a ∧ b) = (¬a2 ∨ a) ∧(¬a2 ∨ b) ∧(a2 ∨ ¬a ∨ ¬b)a3 ↔ (¬c ∧ a4) = (¬a3 ∨ ¬c) ∧(¬a3 ∨ a4) ∧(a3 ∨ c ∨ ¬a4)a4 ↔ (d ∨ e) =
(¬a4 ∨ d ∨ e) ∧(a4 ∨ ¬d) ∧(a4 ∨ ¬e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 9 / 10
CNF conversion: Tseitin’s encoding
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
h↔ (p1 ∨ p2) = (¬h ∨ p1 ∨ p2) ∧ (h ∨ ¬p1) ∧ (h ∨ ¬p2)h↔ (p1 ∧ p2) = (¬h ∨ p1) ∧ (¬h ∨ p2) ∧ (h ∨ ¬p1 ∨ ¬p2)
a1 ↔ (a2 ∨ a3) = (¬a1 ∨ a2 ∨ a3) ∧(a1 ∨ ¬a2) ∧(a1 ∨ ¬a3)a2 ↔ (a ∧ b) = (¬a2 ∨ a) ∧(¬a2 ∨ b) ∧(a2 ∨ ¬a ∨ ¬b)a3 ↔ (¬c ∧ a4) = (¬a3 ∨ ¬c) ∧(¬a3 ∨ a4) ∧(a3 ∨ c ∨ ¬a4)a4 ↔ (d ∨ e) = (¬a4 ∨ d ∨ e) ∧(a4 ∨ ¬d) ∧(a4 ∨ ¬e)
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 9 / 10
CNF conversion: Tseitin’s encoding
φ := (a ∧ b) ∨ (¬c ∧ (d ∨ e))
CNF(φ) =(¬a1 ∨ a2 ∨ a3) ∧ (a1 ∨ ¬a2) ∧ (a1 ∨ ¬a3) ∧(¬a2 ∨ a) ∧ (¬a2 ∨ b) ∧ (a2 ∨ ¬a ∨ ¬b) ∧(¬a3 ∨ ¬c) ∧ (¬a3 ∨ a4) ∧ (a3 ∨ c ∨ ¬a4) ∧(¬a4 ∨ d ∨ e) ∧ (a4 ∨ ¬d) ∧ (a4 ∨ ¬e) ∧a1
where: a1, a2, a3, a4 are newly introduced variables.
Formal Methods in Software Development — Mădălina Eraşcu (WUT - FMI) WS 2019/2020 10 / 10