È assolutamente possibile generare tale tabella da un'espressione booleana, a condizione che l'espressione non invochi funzioni. In particolare, assumerò che abbiamo operatori per l'uguaglianza =, negazione NOT, congiunzione AND e disgiunzione OR. Data tale espressione, possiamo trasformarla in una forma normale disgiuntiva a mano, o più noiosamente implementando un algoritmo adatto. In DNF, l'espressione è costituita da gruppi AND che sono OR-ed insieme. Questo è interessante, perché ogni riga della tabella implica un AND per tutti i valori di input.
Esempio:
(foo='bar' OR foo='foo') AND (bar='foo')
<=> distributive law
(foo='bar' AND bar='foo') OR (foo='foo' AND bar='foo')
Produce la tabella:
foo bar
--- ---
bar foo
foo foo
Le cose diventano più difficili una volta introdotte le negazioni:
(foo='bar' OR foo='foo') AND NOT (bar='foo') AND NOT (bar='bar')
<=> distributive law
(foo='bar' AND NOT bar='foo' AND NOT bar='bar') OR (foo='foo' AND NOT bar='foo' AND NOT bar='bar')
Questo non può essere rappresentato direttamente nella tabella, poiché ora escludiamo determinati valori. Ogni cella di una tabella dovrebbe avere la capacità di ESCLUDERE un insieme di valori:
foo | bar
----+------------------
bar | EXCLUDE(foo, bar)
foo | EXCLUDE(foo, bar)
Tenendo presenti queste idee, dovrebbe essere possibile generare manualmente le tabelle con un basso tasso di errore. Se è richiesta una soluzione automatizzata, il problema si riduce alla trasformazione automatizzata di un'espressione booleana in DNF, per cui esistono approcci.