Disjunctive Normal Form

Context: FIT1058_MOC, FIT2014_MOC · an OR-of-ANDs standard form · read directly from a truth table · dual to Conjunctive Normal Form

Quick Revision

  • 🎯 Objective: a disjunction (OR) of parts, each a conjunction (AND) of literals ➔ readable row-by-row from a truth table.
  • 📦 Core Components: literal (plain / negated ) ➔ one implicant per True row ➔ OR them.
  • ⚡ Key Constraint: up to parts (exponential blow-up); but satisfiability is trivial. In FIT2014, DNF is mainly a stepping stone to CNF.

🔁 The two-table routine (FIT2014)

  • DNF ➔ take the True rows; one conjunction per row; OR them.
  • CNF ➔ take the False rows; write their DNF; then negate the whole thing and apply De Morgan.
  • Worked contrast — “at least one of ➔ 7 True rows ⟹ DNF has 7 terms; the single False row negates to the 1 clause :
  • “At least two of ➔ the 4 False rows negate and simplify to .
  • Degenerate case ➔ for “all three”, the single True row gives , which is simultaneously DNF and CNF (each conjunct is a one-literal clause).

📝 Core

1. The Form (OR-of-ANDs)

  • Literal ➔ a variable plain () or negated once (); is not a literal (equals ).
  • DNF ➔ disjunction of parts, each part a conjunction of literals.
  • Standard form ➔ built for any truth table ⟹ every expression has a DNF.

2. Reading It Off a Truth Table

  • Per True row ➔ write a conjunction: variable plain if True, negated if False, AND them.
  • OR the rows ➔ each part is True in exactly its own row ⟹ the OR is True on exactly ‘s rows.
  • Meaning ➔ the parts are an encoded list of all satisfying assignments.

Key identities:

⚖️ Core Decision Matrix

PropertyDNFWhy
built fromTrue rowsone implicant each
satisfiabilityeasyany internally-consistent part is a witness
sizeup to partsexponential blow-up
natural forlisting solutionsnot for stating rules (CNF better)

When It Flips: DNF makes satisfiability trivial (inspect the parts — a part with no names a satisfying assignment), but real specifications list conditions that hold together (a conjunction), which suits CNF.

📊 Exam Execution Trace

Manual Execution Trace

with output T,T,F,T:

Step / StateOutputRow term (True row)
0 (Init)
1FFT
2FTT
3TFF
4TTT

⚠️ Common Mistakes

  • 💡 DNF keeps row-true literals plain ➔ opposite of CNF’s False-row negation; reduce to before calling it a literal.

🧠 Active Recall