Logical disjunction



In logic and mathematics, or, also known as logical disjunction or inclusive disjunction is a logical operator that results in true whenever one or more of its operands are true. In grammar, or is a coordinating conjunction.

Definition
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. More generally a disjunction is a logical formula that can have one or more literals separated only by ORs. A single literal is often considered to be a degenerate disjunction.

Truth table
The truth table of p OR q (also written as p ∨ q (logic), p || q (computer science), or p + q (electronics)) is as follows:

Venn diagram
The Venn diagram of "p or q"



Properties
The following properties apply to disjunction:


 * associativity: $$a \lor (b \lor c) \equiv (a \lor b) \lor c $$


 * commutativity: $$a \lor b \equiv b \lor a $$


 * distributivity: $$(a \lor (b \land c)) \equiv ((a \lor b) \land (a \lor c))$$
 * $$(a \lor (b \lor c)) \equiv ((a \lor b) \lor (a \lor c))$$
 * $$(a \lor (b \equiv c)) \equiv ((a \lor b) \equiv (a \lor c))$$


 * idempotency: $$a \lor a \equiv a $$


 * monotonicity: $$(a \rightarrow b) \rightarrow ((c \lor a) \rightarrow (c \lor b))$$
 * $$(a \rightarrow b) \rightarrow ((a \lor c) \rightarrow (b \lor c))$$


 * truth-preserving: The interpretation under which all variables are assigned a truth value of 'true' produces a truth value of 'true' as a result of disjunction.


 * falsehood-preserving: The interpretation under which all variables are assigned a truth value of 'false' produces a truth value of 'false' as a result of disjunction.

Symbol
The mathematical symbol for logical disjunction varies in the literature. In addition to the word "or", the symbol "∨", deriving from the Latin word vel for "or", is commonly used for disjunction. For example: "A ∨ B " is read as "A or B ". Such a disjunction is false if both A and B are false. In all other cases it is true.

All of the following are disjunctions:
 * A ∨ B
 * ¬A ∨ B
 * A ∨ ¬B ∨ ¬C ∨ D ∨ ¬E

The corresponding operation in set theory is the set-theoretic union.

Applications in computer science
Operators corresponding to logical disjunction exist in most programming languages.

Bitwise operation
Disjunction is often used for bitwise operations. Examples:


 * 0 or 0 = 0
 * 0 or 1 = 1
 * 1 or 0 = 1
 * 1 or 1 = 1
 * 1010 or 1110 = 1110

The  operator can be used to set bits in a bitfield to 1, by  -ing the field with a constant field with the relevant bits set to 1.

Logical operation
Many languages distinguish between bitwise and logical disjunction by providing two distinct operators; in languages following C, bitwise disjunction is performed with the single pipe and logical disjunction with the double pipe  operators.

Logical disjunction is usually short-circuited; that is, if the first (left) operand evaluates to  then the second (right) operand is not evaluated. The logical disjunction operator thus usually constitutes a sequence point.

Although in most languages the type of a logical disjunction expression is boolean and thus can only have the value  or , in some (such as Python and JavaScript) the logical disjunction operator returns one of its operands; the first operand if it evaluates to a true value, and the second operand otherwise.

Union
The union used in set theory is defined in terms of a logical disjunction: x ∈ A ∪ B if and only if (x ∈ A) ∨ (x ∈ B). Because of this, logical disjunction satisfies many of the same identities as set-theoretic union, such as associativity, commutativity, distributivity, and de Morgan's laws.