formal methods in software development - propositional ... · formalmethodsinsoftwaredevelopment...

65
Formal Methods in Software Development Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty 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

Upload: others

Post on 19-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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: Formal Methods in Software Development - Propositional ... · FormalMethodsinSoftwareDevelopment Propositional Logic on Examples Mădălina Eraşcu West University of Timişoara Faculty

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