OPERATOR GUIDE / LOGIC

Logical OR

At least one condition must be true.

||

Syntax at a glance

a || b

How it works

Logical OR is true when at least one operand is true. It is inclusive: A || B also succeeds when both A and B are true. The only failing binary combination is A = 0 and B = 0.

For req |-> (ack || retry), each high request requires either acknowledgement or retry in the same cycle. A response with both signals high also satisfies this expression. If the design requires exactly one response, express that different requirement explicitly; with binary signals, ack != retry checks that they differ.

The placement of OR matters. In (a || b) |-> ready, either input can trigger a ready obligation. In a |-> (b || ready), only a triggers an obligation, and either b or ready can satisfy it.

For a same-cycle Boolean implication, !a || b is equivalent to a |-> b. If a is zero, !a makes the OR true. If a is one, b must be one. This equivalence explains why an assertion can receive a perfect match even when it uses different text from the reference. It does not remove delays from temporal implications.

AND binds more tightly than OR in the lab, so a || b && c groups as a || (b && c). Write (a || b) && c if both the disjunction and c are required. OR combines Boolean conditions at one sample; temporal sequence alternatives are outside the current grammar.

Examples describe AssertionQuest's sampled, binary educational subset. Properties are evaluated at every cycle; enter only the property body in the editor.
All operators & finite-trace semantics →