4.8 Canonical Forms: Expanding Every Minterm to Full Width

Define canonical SOP and canonical POS, expand a minterm-list function into full canonical SOP form, and distinguish a canonical expression from a general (non-canonical) SOP/POS expression.

A canonical form is the specific, fully-expanded version of SOP or POS in which every single term (or factor) explicitly includes every one of the function's variables, with no variable ever omitted from any term. This is a stricter requirement than general SOP or POS (Modules 4.4, 4.5), which only require each term to be a pure AND (or factor to be a pure OR) — canonical form additionally requires every term to be 'full width', mentioning all n variables. Canonical forms matter because they are the unique, mechanical, always-derivable starting point that connects a truth table directly to a Boolean expression: given any truth table, there is exactly one canonical SOP expression and exactly one canonical POS expression that represent it, with no judgment calls or simplification choices involved — that judgment only enters later, once minimization (Module 4.9, Module 5) begins.

Core Concept: Canonical SOP, Canonical POS, and the Two Expansions

The spec's coverage lists four related ideas together: canonical SOP, canonical POS, minterm expansion, and maxterm expansion — and these pair up naturally. Canonical SOP is built via minterm expansion: OR together the full minterm expression (Module 4.6) for every row where the function is 1. Canonical POS is built via maxterm expansion: AND together the full maxterm expression (Module 4.7) for every row where the function is 0. Both processes are entirely mechanical once you know which rows the function is 1 (or 0) at — there is no creative or simplification step involved in reaching canonical form, only in leaving it.

The defining feature that separates canonical form from ordinary SOP/POS is term width: in canonical SOP, every single product term must include all n variables (each appearing true or complemented); a general SOP expression like F=A'B+BC+AC' from Module 4.4, where the terms have only two variables each (out of three total: A, B, C), is not canonical, even though it is valid, correctly-structured SOP form. Canonical form is a special case of general SOP/POS — narrower, more rigid, but also uniquely determined by the truth table with no ambiguity.

• Canonical SOP: OR of full minterm terms (every term mentions every variable) for each 1-row. • Canonical POS: AND of full maxterm factors (every factor mentions every variable) for each 0-row. • Canonical form ⊂ general SOP/POS: it is SOP/POS with the additional requirement that every term/factor is full-width. • Given a truth table, the canonical SOP and canonical POS expressions are each unique — no simplification choices are involved.

Step-by-Step: Expanding Σm(1,2,5) into Canonical SOP

The spec's own worked example is F = Σm(1,2,5), and its instruction is direct: 'Expand each minterm into a product containing every variable.' Assuming three variables A, B, C (consistent with the minterm/maxterm examples elsewhere in this module), the procedure is to convert each listed index back into its binary row and then into its full minterm expression, exactly as taught in Module 4.6. Index 1 = binary 001 → A'B'C. Index 2 = binary 010 → A'BC'. Index 5 = binary 101 → AB'C.

OR-ing these three full-width minterm expressions together gives the canonical SOP form: F = A'B'C + A'BC' + AB'C. Every term here explicitly mentions all three variables (A, B, and C, each either true or complemented) — satisfying the canonical requirement — in contrast to a simplified, non-canonical expression for the same function, which might legitimately combine or drop variables in some terms once actual simplification (Module 4.9) is applied.

• Step 1: Convert each minterm index to its binary row (index 1→001, 2→010, 5→101 for 3 variables). • Step 2: Convert each row to its full minterm expression using the true/complemented rule from Module 4.6. • Step 3: OR all the resulting full-width minterm expressions together. • Result: Σm(1,2,5) = A'B'C + A'BC' + AB'C, exactly as the spec's example instructs.

Practical and Real-World Application: The Bridge Between Truth Table and Circuit

Canonical form is the standard intermediate representation used by digital design textbooks, coursework, and logic-synthesis tools to go from a truth table (or a Σm/ΠM specification) to an actual, unambiguous Boolean expression, before any optimization is applied. Because the canonical expansion is entirely mechanical and produces a unique result, it serves as a reliable, error-checkable 'first draft' — any later simplification (Module 4.9) or K-map minimization (Module 5) can always be checked for correctness by confirming it still matches the original canonical expression's truth table.

In circuit terms, a canonical SOP expression corresponds directly to the most naive (and least efficient) possible AND-OR implementation: one dedicated AND gate per minterm (each needing all n input variables wired to it, true or complemented), feeding a single wide OR gate. Real circuits essentially never ship in this exact unminimized form — the entire purpose of Modules 4.9 and 5 is to take this canonical starting point and reduce it to something with far fewer gates and narrower terms — but canonical form is nonetheless the essential, correct baseline every minimization technique starts from and must remain logically equivalent to.

Common Mistake and the Tricky Concept

The most common mistake is confusing 'SOP form' generally with 'canonical SOP' specifically, and treating any AND-terms-ORed-together expression as canonical. General SOP only requires each term to be a pure AND with no nested OR (Module 4.4's rule); canonical SOP adds the much stricter requirement that every term include every variable of the function. An expression like F = A'B + AC' is valid general SOP but is not canonical, because neither term mentions all of the function's variables (assuming a third variable C or B respectively is part of the function).

A second subtlety: canonical form is not simplified form, and should never be mistaken for the 'final' or 'best' version of a Boolean expression — it is, in fact, usually the least simplified, most verbose correct expression for a given function, since it exhaustively lists one full-width term per true (or false) row with no combining or reduction applied. Canonical form's value is precision and mechanical derivability from a truth table, not compactness; compactness is exactly what Boolean simplification and K-maps are for.

Canonical Form Definitions

Canonical form is a strict subset of general SOP/POS — extra requirement: full variable width per term. Every truth table has exactly one canonical SOP and exactly one canonical POS expression — no ambiguity.

Canonical SOP:
  F = Σ (minterm expression) for every row where F = 1
  Every term includes ALL n variables (true or complemented).

Canonical POS:
  F = Π (maxterm expression) for every row where F = 0
  Every factor includes ALL n variables (true or complemented).

Spec's minterm-expansion example:
  F = Σm(1,2,5)   →   F = A'B'C + A'BC' + AB'C

Code Examples

This is the spec's own worked example, following its exact instruction to 'expand each minterm into a product containing every variable.' Each of the three listed indices is converted to its binary row and then to its corresponding full-width minterm term (every term explicitly containing A, B, and C), and the three terms are OR'd together to form the complete canonical SOP expression. Expected result: Canonical SOP with three full-width (3-variable) terms Σm(1,2,5) = A'B'C + A'BC' + AB'C

General SOP allows terms of varying width, as long as each is a pure AND — here B'C is only 2 variables wide even though the function has 3. Canonical SOP requires every term to explicitly include all 3 variables; expanding B'C into full width means covering both cases of the missing variable A (A'B'C and AB'C), which is exactly why canonical form is typically longer and more repetitive than a general, non-canonical SOP expression for the same function.

Canonical form always uses full-width terms; general SOP may use shorter terms for the same function.

F = Σm(1,2,5)   (3 variables: A, B, C)

Index 1 = 001 → A'B'C
Index 2 = 010 → A'BC'
Index 5 = 101 → AB'C

Canonical SOP: F = A'B'C + A'BC' + AB'C
General (non-canonical) SOP for a 3-variable function:
  F = B'C + A'BC'      (terms are shorter, not full-width)

Canonical SOP for the SAME function (if it happens to
match Σm(1,5,2) once fully expanded):
  F = A'B'C + AB'C + A'BC'

Important Rules

Canonical SOP: every term is a full-width minterm (all n variables), OR'd together for every 1-row.

Canonical POS: every factor is a full-width maxterm (all n variables), AND'd together for every 0-row.

Canonical form is a strict subset of general SOP/POS — it adds a 'must include every variable' requirement to every term/factor.

A truth table determines exactly one canonical SOP and exactly one canonical POS expression, with no ambiguity or choice involved.

The Unminimized Baseline Every Optimization Starts From

Canonical SOP/POS is the mechanical, unambiguous bridge between a truth table (or a Σm/ΠM specification) and an actual Boolean expression, used as the correctness baseline that logic-synthesis tools and hand-derived K-map minimizations (Module 5) are checked against — every later simplification must remain logically equivalent to this unminimized, full-width starting point.

Treating any correctly-structured SOP expression (AND terms OR'd together) as automatically 'canonical'.

Check that every single term explicitly mentions every one of the function's variables (true or complemented) before calling an expression canonical — a shorter term missing even one variable disqualifies the whole expression from being canonical.

General SOP (Module 4.4) only requires each term to be a pure AND; canonical SOP additionally requires full variable width per term. Conflating the two categories means missing the entire point of why canonical form is mechanically derivable and unique from a truth table in the first place.

[tricky-problem] The spec's example expands F = Σm(1,2,5) into canonical SOP form. What specific requirement does the spec's instruction ('expand each minterm into a product containing every variable') enforce? A. Every term must contain exactly one variable. B. Every term must explicitly include all of the function's variables, in true or complemented form — the defining rule of canonical form. C. Every term must be simplified to its shortest possible form. D. Every term must use only uncomplemented variables.

B. Every term must explicitly include all of the function's variables, in true or complemented form — the defining rule of canonical form. — The spec's instruction is precisely the definition of canonical form's term-width requirement: unlike general SOP, where terms can vary in width, canonical SOP requires every term to be a full-width minterm mentioning every one of the function's variables.

[interview] Why is canonical form typically described as the 'least simplified' correct representation of a Boolean function, rather than the most useful one for building a real circuit? A. Because canonical form is only theoretical and cannot be built as a real circuit at all. B. Because canonical form mechanically lists one full-width term per true (or false) row with no combining or reduction, making it exhaustive and unambiguous but typically longer than a minimized expression for the same function. C. Because canonical form only applies to functions with a single variable. D. Because canonical form always requires more variables than the function actually has.

B. Because canonical form mechanically lists one full-width term per true (or false) row with no combining or reduction, making it exhaustive and unambiguous but typically longer than a minimized expression for the same function. — Canonical form's value is that it is mechanically derivable and uniquely determined from a truth table, with zero judgment calls — but that same exhaustiveness (one full-width term per relevant row, nothing combined) usually makes it longer and less efficient than a properly minimized expression, which is exactly why Boolean simplification (Module 4.9) and K-maps (Module 5) exist as the next steps after reaching canonical form.

Expand F = Σm(0,3,6) into canonical SOP form for a 3-variable function with ordering A, B, C.

Index 0 = 000 → A'B'C'. Index 3 = 011 → A'BC. Index 6 = 110 → ABC'. Canonical SOP: F = A'B'C' + A'BC + ABC'.

Convert each index to its 3-bit binary row first, then to its full-width minterm expression.