Go backward to 2.2.4 DisjunctionsGo up to 2.2 Propositional LogicGo forward to 2.2.6 Equivalences

### 2.2.5 Implications

If A and B are formulas, then
(A => B)
is a formula.

Alternative Forms  An implication A => B is often also expressed as

• "A implies B" ("A impliziert B");
• "if A, then B" ("wenn A, dann B");
• "B, (only) if A" ("B (nur) dann, wenn A");
• "B follows from A" ("aus A folgt B");
• "A is sufficient for B" ("A ist hinreichend für B");
• "B is necessary for A" ("B ist notwendig für A");
• `implies(A, B)`.

The last line denotes the input syntax of the Logic Evaluator.

Definition 9 (Semantics of Implication) Let A and B be formulas. The meaning of A => B is defined by the following truth table:
 A B A => B false false true false true true true false false true true true

In other words, A => B is false if and only if A is true and B is false.

Please note that an implication is always true if its premise is false. This may appear strange at first glance, because it makes sentences like "if 2 is odd, then 3 is even" true. However, by an implication we actually want to express the fact "if the premise holds, then also the conclusion holds", i.e.,

• either the premise does not hold,
• or (the premise holds and) the conclusion holds.

This behavior is also expressed by the first of the following laws.

Proposition 9 (Implicative Laws) For all formulas A and B, we have
 A => B iff ~A \/ B A => B iff ~B => ~A ~(A => B) iff A /\  ~B.

Because of the first law, the implication A => B is frequently defined just as a syntactic abbreviation for ~A \/ B.

Operational Interpretation  In the Logic Evaluator, an implication is represented by an object of the Java type

```public final class Implies implements Formula
{
private Formula formula0;
private Formula formula1;

public Implies(Formula _formula0, Formula _formula1)
{
formula0 = _formula0;
formula1 = _formula1;
}

public boolean eval() throws EvalException
{
if (formula0.eval())
{
if (formula1.eval())
return true;
else
return false;
}
else
return true;
}
}
```
The Java expression `(new Implies(A, B)).eval()` computes the truth value of A => B. As one can see, if A evaluates to false, the result is immediately true, i.e., the truth value of B does not matter any more. Only if A evaluates to true, also B is evaluated; the result is false only if A is true and B is false.
Author: Wolfgang Schreiner
Last Modification: October 4, 1999