4.5.8 Quantified Expressions
Quantified expressions provide a way to write universally
and existentially quantified predicates over containers and arrays.
Syntax
quantifier ::= all |
some
Name Resolution Rules
Dynamic Semantics
If the
quantifier
is
all, the expression is False if the evaluation of any
predicate
yields False; evaluation of the
quantified_expression
stops at that point. Otherwise (every predicate has been evaluated and
yielded True), the expression is True. Any exception raised by evaluation
of the
predicate
is propagated.
If the
quantifier
is
some, the expression is True if the evaluation of any
predicate
yields True; evaluation of the
quantified_expression
stops at that point. Otherwise (every predicate has been evaluated and
yielded False), the expression is False. Any exception raised by evaluation
of the
predicate
is propagated.
Examples
The postcondition for
a sorting routine on an array A with an index subtype T can be written:
Post => (A'Length < 2 or else
(for all I in A'First .. T'Pred(A'Last) => A (I) <= A (T'Succ (I))))
The assertion that
a positive number is composite (as opposed to prime) can be written:
pragma Assert (for some X in 2 .. N / 2 => N mod X = 0);
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe