Given a logical expression which contains zero, one or two logical variables, the client application may want to know from the software interface what is the type of the expression.
The task here is to identify all possible types of expressions.
The following table lists all the truth functions (F1 to F16) that can be applied to two logical variables a and b:
| a | 0 | 0 | 1 | 1 | |||
| b | 0 | 1 | 0 | 1 | |||
| F1 ( ) | Contradiction | ![]() |
![]() |
0 | 0 | 0 | 0 |
| F2 (a, b) | Conjunction | ![]() |
0 | 0 | 0 | 1 | |
| F3 (a, b) | Negated Conditional | ![]() |
![]() |
0 | 0 | 1 | 0 |
| F4 (a) | Identity | ![]() |
0 | 0 | 1 | 1 | |
| F5 (a, b) | Negated Conditional | ![]() |
![]() |
0 | 1 | 0 | 0 |
| F6 (b) | Identity | ![]() |
0 | 1 | 0 | 1 | |
| F7 (a, b) | Exclusive Disjunction | ![]() |
![]() |
0 | 1 | 1 | 0 |
| F8 (a, b) | Disjunction | ![]() |
0 | 1 | 1 | 1 | |
| F9 (a, b) | Negated Disjunction | ![]() |
![]() |
1 | 0 | 0 | 0 |
| F10 (a, b) | Biconditional | ![]() |
1 | 0 | 0 | 1 | |
| F11 (b) | Negation | ![]() |
1 | 0 | 1 | 0 | |
| F12 (a, b) | Conditional | ![]() |
![]() |
1 | 0 | 1 | 1 |
| F13 (a) | Negation | ![]() |
1 | 1 | 0 | 0 | |
| F14 (a, b) | Conditional | ![]() |
![]() |
1 | 1 | 0 | 1 |
| F15 (a, b) | Negated Conjunction | ![]() |
![]() |
1 | 1 | 1 | 0 |
| F16 ( ) | Tautology | ![]() |
1 | 1 | 1 | 1 | |
Each truth function can be viewed as the specification of a logical connective; the name of the connective can be used to refer to the type of the logical expression that it constructs.
The first column in the table shows which of the two logical variables the truth functions effectively depend on. Not all truth functions represent binary connectives. Truth functions F4, F6, F11 and F13 can be collapsed to represent unary connectives and truth functions F1 and F16 can be collapsed to represent connectives of zero arity, i.e. logical constants.
The second column in the table shows which terms will be used to refer to the types of logical expressions. A total of 12 terms have been identified:
| Tautology | Contradiction |
| Identity | Negation |
| Conjunction | Negated Conjunction |
| Disjunction | Negated Disjunction |
| Conditional | Negated Conditional |
| Biconditional | Exclusive Disjunction |
The terms Tautology, Contradiction, Negation, Conjunction, Disjunction, Conditional, Biconditional and Exclusive Disjunction are fairly conventional in classical propositional logic.
I don't believe that there are any conventional terms in classical propositional logic for the remaining connectives, hence the terms Identity, Negated Conjunction, Negated Disjunction and Negated Conditional are of my choice. Note that the Negated Conjunction is equivalent to the operation performed by the logic gate NAND and the Negated Disjunction is equivalent to the operation performed by the logic gate NOR.
Note the duality among the twelve logical operators. For instance the truth function of the biconditional and the truth function of the exclusive disjunction return truth values that are opposite to each other. The 12 logical operators can be seen as 6 couples of dual logical operators.
The Conditional expression of variables a and b corresponds to two truth functions
and
. This is usually referred to as the conditional operator being non commutative. In propositional logic the variable to the left of the operator is referred to as the Antecedent and the variable to the right of the operator is referred to as the Consequent.
As far as the software interface is concerned, once the client application establishes that a given expression is a conditional, it may need to further query which variable is the antecedent or which variable is the consequent, to resolve the ambiguity.
The same considerations apply to the Negated Conditional.





























