Skip to main content
  1. /classes/
  2. Classes, Spring 2025/
  3. CS 2370 Spring 2025: Course Site/

cs2370 Notes: 30 Transforms

·179 words·1 min·

Review the code in the scratch repository.

  • Note how the parse code can’t just be accomplished with a single pass through the input.

Simplifying Boolean Expressions
#

Stuff that obviously simplifies:

We can eliminate double negations

  • Not(Not(x)) => x

We can eliminate all literal 0’s or 1’s, unless the expression is just a 0 or 1.

  • a+1 => 1
  • a+0 => a
  • a1 => a
  • a0 => 0

We can eliminate duplicate variables or duplicate clauses.

  • aba => ab
  • a+a => a
  • ab+ab => ab
  • (a+b)(a+b) => ab

Some other rules

  • a!a => 0
  • a+!a => 1

And some legal transformations that might help.

  • a(b+c) <=> ab+ac
  • a+bc <=> (a+b)(a+c)
  • !a!b <=> !(a+b)
  • !a+!b <=> !(ab)

Let’s build an example
#

  • Specifically, literal elimination.

Disjunctive Normal Form (DNF)
#

  • A series of clauses
  • Each with a series of variables or negated variables ANDed together.
  • The clauses are ORed together.
  • Any boolean expression can be expressed in DNF.
  • An expression in DNF corresponds to a truth table.
  • An expression can be transformed into DNF either algebraically or by repeated evaluation.
Nat Tuck
Author
Nat Tuck