Truth table
From Textop Wiki
The article below may contain errors of fact, bias, grammar, etc. The Citizendium Foundation and the participants in the Citizendium project make no representations about the reliability of this article or, generally, its suitability for any purpose. We make this disclaimer of all Citizendium article versions that have not been specifically approved. 
A truth table is a mathematical table used in logic — specifically in connection with boolean algebra, boolean functions, and propositional calculus — to compute the functional values of logical expressions on any of their functional arguments, that is, with respect to the various possible combinations of values that their logical variables may take. In particular, truth tables can be used to tell whether a propositional expression is true for all legitimate input values, that is, valid.
"The pattern of reasoning that the truth table tabulates was Frege's, Peirce's, and Schröder's by 1880. The tables have been prominent in literature since 1920 (Lukasiewicz, Post, Wittgenstein)" (Quine, 39). Lewis Carroll had formulated truth tables as early as 1894 to solve certain problems, but his manuscripts containing his work on the subject were not discovered until 1977 [1]. Wittgenstein's Tractatus LogicoPhilosophicus uses them to place truth functions in a series. The wide influence of this work led to the spread of the use of truth tables.
Truth tables are used to compute the values of propositional expressions in an effective manner that is sometimes referred to as a decision procedure. A propositional expression is either an atomic formula — a propositional constant, propositional variable, or propositional function term (for example, Px or P(x)) — or built up from atomic formulas by means of logical operators, for example, AND (<math>\land</math>), OR (<math>\lor</math>), NOT (<math>\lnot</math>). For instance, <math>Fx \land Gx</math> is a propositional expression.
The column headings on a truth table show (i) the propositional functions and/or variables, and (ii) the truthfunctional expression built up from those propositional functions or variables and operators. The rows show each possible valuation of T or F assignments to (i) and (ii). In other words, each row is a distinct interpretation of (i) and (ii).
Truth tables for classical logic are limited to boolean logical systems in which only two logical values are possible, false and true, usually written F and T, or sometimes 0 or 1, respectively.
Logical negation
Logical negation is an operation on one logical value, typically the value of a proposition, that produces a value of true if its operand is false and a value of false if its operand is true.
The truth table for NOT p (also written as ~p or ¬p) is as follows:
p  Â¬p 

F  T 
T  F 
Logical conjunction
Logical conjunction is an operation on two logical values, typically the values of two propositions, that produces a value of true if and only if both of its operands are true.
The truth table for p AND q (also written as p âˆ§ q, p & q, or p<math>\cdot</math>q) is as follows:
p  q  p âˆ§ q 

F  F  F 
F  T  F 
T  F  F 
T  T  T 
In ordinary language terms, if both p and q are true, then the conjunction p âˆ§ q is true. For all other assignments of logical values to p and to q the conjunction p âˆ§ q is false.
Logical disjunction
Logical disjunction is an operation on two logical values, typically the values of two propositions, that produces a value of false if and only if both of its operands are false.
The truth table for p OR q (also written as p âˆ¨ q) is as follows:
p  q  p âˆ¨ q 

F  F  F 
F  T  T 
T  F  T 
T  T  T 
Logical implication
Logical implication and the material conditional are both associated with an operation on two logical values, typically the values of two propositions, that produces a value of false just in case the first operand is true and the second operand is false.
The truth table associated with the material conditional if p then q (symbolized as p â†’ q) and the logical implication p implies q (symbolized as p â‡’ q) is as follows:
p  q  p â‡’ q 

F  F  T 
F  T  T 
T  F  F 
T  T  T 
Converse implication
The truth table associated with the converse conditional p if q (symbolized as p ← q) and the converse implication p implied by q (symbolized as p ⇐ q) is as follows:
p  q  p ⇐ q 

F  F  T 
F  T  F 
T  F  T 
T  T  T 
Logical equality
Logical equality is an operation on two logical values, typically the values of two propositions, that produces a value of true if and only if both operands are false or both operands are true.
The truth table for p EQ q (also written as p = q, p â†” q, or p â‰¡ q) is as follows:
p  q  p = q 

F  F  T 
F  T  F 
T  F  F 
T  T  T 
Exclusive disjunction
Exclusive disjunction is an operation on two logical values, typically the values of two propositions, that produces a value of true if and only if one but not both of its operands is true.
The truth table for p XOR q (also written as p + q, p âŠ• q, or p â‰ q) is as follows:
p  q  p + q 

F  F  F 
F  T  T 
T  F  T 
T  T  F 
For two propositions, XOR can also be written as (p = 1 âˆ§ q = 0)âˆ¨ (p = 0 âˆ§ q = 1).
Logical NAND
The logical NAND is an operation on two logical values, typically the values of two propositions, that produces a value of false if and only if both of its operands are true. In other words, it produces a value of true if and only if at least one of its operands is false.
The truth table for p NAND q (also written as p  q or p â†‘ q) is as follows:
p  q  p â†‘ q 

F  F  T 
F  T  T 
T  F  T 
T  T  F 
It is frequently useful to express a logical operation as a compound operation, that is, as an operation that is built up or composed from other operations. Many such compositions are possible, depending on the operations that are taken as basic or "primitive" and the operations that are taken as composite or "derivative".
In the case of logical NAND, it is clearly expressible as a compound of NOT and AND.
The negation of conjunction <math>\neg (p \and q) \equiv p \bar{\and} q</math>, and the disjunction of negations <math>\neg p \or \neg q</math> are depicted as follows:
<math>p</math>  <math>q</math>  <math>p \and q</math>  <math>p \bar{\and} q</math>  <math>\neg p</math>  <math>\neg q</math>  <math>\neg p \or \neg q</math> 

F  F  F  T  T  T  T 
F  T  F  T  T  F  T 
T  F  F  T  F  T  T 
T  T  T  F  F  F  F 
Logical NNOR
The logical NNOR is an operation on two logical values, typically the values of two propositions, that produces a value of true if and only if both of its operands are false. In other words, it produces a value of false if and only if at least one of its operands is true.
The truth table for p NNOR q (also written as p âŠ¥ q or p â†“ q) is as follows:
p  q  p â†“ q 

F  F  T 
F  T  F 
T  F  F 
T  T  F 
The negation of disjunction <math>\neg (p \or q) \equiv p \bar{\or} q</math> and the conjunction of negations <math>\neg p \and \neg q</math> are tabulated as follows:
<math>p</math>  <math>q</math>  <math>p \or q</math>  <math>p \bar{\or} q</math>  <math>\neg p</math>  <math>\neg q</math>  <math>\neg p \and \neg q</math> 

F  F  F  T  T  T  T 
F  T  T  F  T  F  F 
T  F  T  F  F  T  F 
T  T  T  F  F  F  F 
Inspection of the tabular derivations for NAND and NNOR, under each assignment of logical values to the functional arguments <math>p\!</math> and <math>q\!</math>, produces the identical patterns of functional values for <math>p \bar{\and} q</math> as for <math>\neg p \or \neg q</math>, and for <math>p \bar{\or} q</math> as for <math>\neg p \and \neg q</math>. Thus the first and second expressions in each pair are logically equivalent, and may be substituted for each other in all contexts that pertaing solely to their logical values.
This equivalence is one of De Morgan's laws.
Applications
Truth tables can be used to prove many other logical equivalences. For example, consider the following truth table:
p  q  Â¬p  Â¬p âˆ¨ q  p â†’ q 

F  F  T  T  T 
F  T  T  T  T 
T  F  F  F  F 
T  T  F  T  T 
This demonstrates the fact that p â†’ q is logically equivalent to Â¬p âˆ¨ q.
Truth table for most commonly used logical operators
Here is a truth table giving definitions of the most commonly used 6 of the 16 possible truth functions of 2 binary variables (P,Q are thus boolean variables):
<math>P </math>  <math>Q </math>  <math>P \and Q</math>  <math>P \or Q</math>  <math>P \underline{\and} Q</math>  <math>P \underline{\or} Q</math>  <math>P \rightarrow Q</math>  <math>P \leftarrow Q</math> 

F  F  F  F  F  T  T  T 
F  T  F  T  T  F  T  F 
T  F  F  T  T  F  F  T 
T  T  T  T  F  T  T  T 
Key:
 T = true, F = false
 <math>\and</math> = AND (logical conjunction)
 <math>\or</math> = OR (logical disjunction)
 <math>\underline{\and}</math> = XOR (exclusive or)
 <math>\underline{\or}</math> = XNOR (exclusive nor)
 <math>\rightarrow</math> = conditional "ifthen"
 <math>\leftarrow</math> = conditional "(then)if"
 <math>\iff</math> biconditional or "ifandonlyif" is logically equivalent to <math>\underline{\or}</math>: XNOR (exclusive nor).
Johnston diagrams, similar to Venn diagrams and Euler diagrams, provide a way of visualizing truth tables. An interactive Johnston diagram illustrating truth tables is at LogicTutorial.com
Condensed truth tables for binary operators
For binary operators, a condensed form of truth table is also used, where the row headings and the column headings specify the operands and the table cells specify the result. For example Boolean Logic uses this condensed truth table notation:


This notation is useful especially if the operations are commutative, although one can additionally specify that the rows are the first operand and the columns are the second operand. This condensed notation is particularly useful in discussing multivalued extensions of logic, as it significantly cuts down on combinatoric explosion of the number of rows otherwise needed. It also provides for quickly recognizable characteristic "shape" of the distribution of the values in the table which can assist the reader in grasping the rules more quickly.
Truth tables in digital logic
Truth tables are also used to specify the functionality of hardware lookup tables (LUTs) in digital logic circuitry. For an ninput LUT, the truth table will have 2^n values (or rows in the above tabular format), completely specifying a boolean function for the LUT. By representing each boolean value as a bit in a binary number, truth table values can be efficiently encoded as integer values in electronic design automation (EDA) software. For example, a 32bit integer can encode the truth table for a LUT with up to 5 inputs.
When using an integer representation of a truth table, the output value of the LUT can be obtained by calculating a bit index k based on the input values of the LUT, in which case the LUT's output value is the kth bit of the integer. For example, to evaluate the output value of a LUT given an array of n boolean input values, the bit index of the truth table's output value can be computed as follows: if the ith input is true, let Vi = 1, else let Vi = 0. Then the kth bit of the binary representation of the truth table is the LUT's output value, where k = V0*2^0 + V1*2^1 + V2*2^2 + ... + Vn*2^n.
Truth tables are a simple and straightforward way to encode boolean functions, however given the exponential growth in size as the number of inputs increase, they are not suitable for functions with a large number of inputs. Other representations which are more memory efficient are text equations and binary decision diagrams.
Truth Table used In Digital Electronics (the dumby version)
In digital electronics (and computer science, fields of engineering derived from applied logic and math), truth tables can be used to reduce basic boolean operations to simple "thoughtless" correlations of inputs to outputs, sans implementation (with logic gates or code). For example a binary addition can be represented with the truth table:
A B  C R 1 1  1 0 1 0  0 1 0 1  0 1 0 0  0 0 where A = First Operand B = Second Operand C = Carry R = Result
This truth table is read left to right:
 Value pair (A,B) equals value pair (C,R).
 Or for this example, A plus B equal result R, with the Carry C.
Note I haven't told you what logic operations to use to obtain these results, and the use of this table is not limited to addition operations, but within the context of computer science it's often used to refer to addition operations with binary digits.
It's a diagram of inputs to outputs.
However in this case it can only be used for very simple inputs and outputs, such as 1's and 0's.
Consequently, the size of the truth table will go up with the number of types of values one can have on the inputs.
For instance, in an addition operation, one needs two operands, A and B. Each can have one of two values, zero or one. The number of combinations of these two values is 2x2, or four. So the result is four possible outputs of C and R. If one was to use base 3, the size would increase to 3x3, or nine possible outputs.
The first "addition" example, above is called a HalfAdder, a FullAdder is when the Carry from the previous operation is provided as input to the next adder. Thus a truth table of eight rows would be needed to describe a full adder's logic:
A B C*  C R 0 0 0  0 0 0 1 0  0 1 1 0 0  0 1 1 1 0  1 0 0 0 1  0 1 0 1 1  1 0 1 0 1  1 0 1 1 1  1 1 Same as previous, but.. C* = Carry From Previous Adder
Series of these adders can be strung together to make theoretically infinitely long addition operations that will add numbers from single digits to millions of digits (of course, limited by memory and physics).
Supposedly, one could extrapolate that all computational operations can be reduced to truth tables, but reduction to atomic operations would be necessary as the tables grow exponentially with the number of inputs. Fortunately, it's been proven that all logic used in computers could be reduced to "NAND" gates. Provided the truth tables for NAND gates, one could describe additions with NAND gates, then given the phsyical implementation of a NAND gate in electronics, one could derive a simple circuit that performs NAND operations, from that one could probably imagine how to conceive of a computer.
Truth tables are a tool developed by Charles Peirce in the 1880s. A truth table is a kind of mathematical table used in logic to determine whether an expression is true or whether an argument is valid.
Truth tables show the values, relationships, and the results of performing logical operations on logical expressions. The logical operators are not, and, or, conditional, and biconditional. The logical expressions are necessarily true, contingently true, or necessarily false.
The column headings on a truth table show the input variables and output expressions. The rows show each possible combination of inputs, one combination per row, and the outputs that result from each combination of inputs.
Truth tables are usually limited to bivalent logic systems where only two truth values are possible, true or false.
For example, take two terms, A and B, and the logical operator "and" (∧), signifying the conjunction "A and B". In common English, if A is true and B is true, then the conjunction "A and B" is true; under all other possible assignments of truth values to A and B, the conjunction is false. This relationship is defined as follows:
A B A ∧ B T T T T F F F T F F F F
In a bivalent logic system, all the operators can be explicitly defined this way. For example, the not (~) relationship is defined as follows:
A ~A T F F T
The or (∨) relationship is defined as follows:
A B A ∨ B T T T T F T F T T F F F
Compound expressions can be constructed, using parenthesis to denote precedence. The negation of conjunction [ ~( A ∧ B ) ], is depicted as follows:
A B A ∧ B ~( A ∧ B ) T T T F T F F T F T F T F F F T
Truth tables can be used to prove logical equivalence. The truth table for the disjunction of notA and notB is:
A B ~A ~B A ∧ B ~(~A ∨ ~B) T T F F T T T F F T F F F T T F F F F F T T F F
(Because the enumeration of possible truthvalues for A and B yields the same truthvalue under both ( A ∧ B ) and ~(~A ∨ ~B), the two are logically equivalent, and may be substituted for each other. This equivalence is one of DeMorgan's Laws.)
An example of a truth table in logic:
P  Q  P & Q  P ∨ Q  P xor Q  P → Q  P ↔ Q T  T  T  T  F  T  T T  F  F  T  T  F  F F  T  F  T  T  T  F F  F  F  F  F  T  T
Key:
 T = true, F = false
 & (or ∧) = and
 ∨ = inclusive or
 ⊕ = exclusive or
 → = conditional or "ifthen"
 ↔ = biconditional or "ifandonlyif"
Johnston diagrams, similar to Venn diagrams or Euler Diagrams, provide a way of visualizing truth tables. An interactive Johnston diagram illustrating truth tables is at LogicTutorial.com
Truthtables and TruthFunctions can be found in Tractatus LogicoPhilosophicus, Proposition 5.101.
References
 Quine, W.V. (1982), Methods of Logic, 4th edition, Harvard University Press, Cambridge, MA.
See also
Basic logical operators


Related topics
External links
 Truth Table Constructor (Java applet)
 Webbased truth table generator
 Truth/Logic/Decision Table Tool
 Portions of the above article are adapted from an earlier version of the Wikinfo article, "Truth table", used under the GNU Free Documentation License.
 Portions of the above article are adapted from an earlier version of the Wikipedia article, "Truth table", used under the GNU Free Documentation License.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no FrontCover Texts, and no BackCover Texts. A copy of the license is included in the section titled GNU FDL text.