Page 1
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
Page 2
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
Page 3
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
Page 4
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
Page 5
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
Page 6
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
Page 7
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
Page 8
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
Page 9
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
Page 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
Page 11
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
Page 12
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
Page 13
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
Page 14
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
Page 15
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
Page 16
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
Page 17
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
Page 18
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
Page 19
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
Page 20
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
Page 21
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
Page 22
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
Page 23
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
Page 24
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
Page 25
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
Page 26
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
Page 27
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
Page 28
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
Page 29
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
Page 30
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
Page 31
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
Page 32
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
Page 33
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
Page 34
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
Page 35
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
Page 36
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
Page 37
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
Page 38
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
Page 39
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
Page 40
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
Page 41
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
Page 42
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
Page 43
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
Page 44
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
Page 45
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
Page 46
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
Page 47
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
Page 48
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
Page 49
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
Page 50
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
Page 51
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
Page 52
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
Page 53
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
Page 54
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
Page 55
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
Page 56
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
Page 57
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
Page 58
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
Page 59
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
Page 60
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
Page 61
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
Page 62
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
Page 63
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
Page 64
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
Page 65
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