4.2.1.3. Option type support

These functions and predicates implement the standard library for working with option types. Note that option type support is still incomplete.

Option type support for Booleans

In this section: absent, deopt, occurs.

absent

predicate absent(var opt bool: x)
True iff x is absent

deopt

predicate deopt(var opt bool: x)
Return value of x (assumes that x is not absent)

occurs

predicate occurs(var opt bool: x)
True iff x is not absent

Option type support for integers

In this section: absent, deopt, had_zero, occurs.

absent

predicate absent(var opt int: x)
True iff x is absent

deopt

function var $$E: deopt(var opt $$E: x)
Return value of x (assumes that x is not absent)

had_zero

test had_zero(var opt int: x)
test had_zero(opt int: x)
test had_zero(array [int] of var opt int: x)

True if x had zero in its original domain.

Returns true if absent zero representation is disabled or if it is possible that \(\text{occurs}(x) \wedge \text{deopt}(x) = 0\)

occurs

predicate occurs(var opt int: x)
True iff x is not absent

Option type support for floats

In this section: absent, deopt, occurs.

absent

predicate absent(var opt float: x)
True iff x is absent

deopt

function var float: deopt(var opt float: x)
Return value of x (assumes that x is not absent)

occurs

predicate occurs(var opt float: x)
True iff x is not absent

Other declarations

In this section: absent, deopt, occurs.

absent

1.  test absent($T: x)

2.  test absent(var $T: x)

3.  test absent(set of $$T: x)

4.  test absent(var set of $$T: x)

5.  test absent(opt $T: x)
1-4.
Test if x is absent (always returns false)
  1. Test if x is absent

deopt

 1.  function $$T: deopt(opt $$T: x)

 2.  function $T: deopt(opt $T: x)

 3.  function array [$$U] of $$T: deopt(array [$$U] of opt $$T: x)

 4.  function array [$$U] of $T: deopt(array [$$U] of opt $T: x)

 5.  function var $T: deopt(var $T: x)

 6.  function $T: deopt($T: x)

 7.  function array [$U] of var $T: deopt(array [$U] of var $T: x)

 8.  function array [$$U] of var bool: deopt(array [$$U] of var opt bool: x)

 9.  function array [$$U] of var $$E: deopt(array [$$U] of var opt $$E: x)

10.  function array [$$U] of var float: deopt(array [$$U] of var opt float: x)
1, 2.
Return value of x if x is not absent. Aborts when evaluated on absent value.
3, 4.
Return array of the value of x[i] where x[i] is not absent. Aborts when evaluated with an absent element.
5-7.
Return value x unchanged (since x is guaranteed to be non-optional).
8-10.
Return array of the value of x[i] (assumes that x[i] is not absent).

occurs

1.  test occurs($T: x)

2.  test occurs(var $T: x)

3.  test occurs(set of $$T: x)

4.  test occurs(var set of $$T: x)

5.  test occurs(opt $T: x)
1-4.
Test if x is not absent (always returns true)
  1. Test if x is not absent