4.2.1.8. Reflection operations

These functions return information about declared or inferred variable bounds and domains.

In this section: annotate, dom, dom_array, dom_array_occurring, dom_bounds_array, dom_size, fix, has_ann, has_bounds, has_ub_set, is_fixed, is_same, lb, lb_array, ub, ub_array.

annotate

test annotate(any $T: x, ann: a)
Annotate declaration of x with annotation a

dom

function set of int: dom(var int: x)
function set of int: dom(var opt int: x)
Return domain of x

dom_array

function set of int: dom_array(array [$T] of var int: x)
function set of int: dom_array(array [$T] of var opt int: x)
Return union of all domains of the elements in array x

dom_array_occurring

function set of int: dom_array_occurring(array [$T] of var opt int: x)
Return union of all domains of the elements in array x, ignoring absent elements

dom_bounds_array

function set of int: dom_bounds_array(array [$T] of var int: x)
function set of int: dom_bounds_array(array [$T] of var opt int: x)
Return approximation of union of all domains of the elements in array x

dom_size

function int: dom_size(var int: x)
Return cardinality of the domain of x

fix

1.  function $T: fix(var $T: x)

2.  function opt $T: fix(var opt $T: x)

3.  function array [$U] of $T: fix(array [$U] of var $T: x)

4.  function array [$U] of opt $T: fix(array [$U] of var opt $T: x)
1, 2.
Check if the value of x is fixed at this point in evaluation. If it is fixed, return its value, otherwise abort.
3, 4.
Check if the value of every element of the array x is fixed at this point in evaluation. If all are fixed, return an array of their values, otherwise abort.

has_ann

test has_ann(any $T: x, ann: a)
Test if x is annotated a

has_bounds

test has_bounds(var int: x)
test has_bounds(var float: x)
Test if variable x has declared, finite bounds

has_ub_set

test has_ub_set(var set of int: x)
Test if variable x has a declared, finite upper bound

is_fixed

1.  test is_fixed(any $T: x)

2.  test is_fixed(array [$U] of any $T: x)
  1. Test if x is fixed

  2. Test if every element of array x is fixed

is_same

test is_same(any $T: x, any $U: y)
Test if x and y are the same variable

lb

1.  function int: lb(var int: x)

2.  function int: lb(var opt int: x)

3.  function float: lb(var float: x)

4.  function float: lb(var opt float: x)

5.  function set of int: lb(var set of int: x)

6.  function array [$U] of int: lb(array [$U] of var int: x)

7.  function array [$U] of float: lb(array [$U] of var float: x)

8.  function array [$U] of set of int: lb(array [$U] of var set of int: x)
1-5.
Return lower bound of x
6-8.
Return array of lower bounds of the elements in array x

lb_array

1.  function int: lb_array(array [$U] of var opt int: x)

2.  function float: lb_array(array [$U] of var opt float: x)

3.  function set of int: lb_array(array [$U] of var set of int: x)
1, 2.
Return minimum of all lower bounds of the elements in array x
  1. Return intersection of all lower bounds of the elements in array x

ub

1.  function int: ub(var int: x)

2.  function int: ub(var opt int: x)

3.  function float: ub(var float: x)

4.  function float: ub(var opt float: x)

5.  function set of int: ub(var set of int: x)

6.  function array [$U] of int: ub(array [$U] of var int: x)

7.  function array [$U] of float: ub(array [$U] of var float: x)

8.  function array [$U] of set of int: ub(array [$U] of var set of int: x)
1-5.
Return upper bound of x
6-8.
Return array of upper bounds of the elements in array x

ub_array

1.  function int: ub_array(array [$U] of var opt int: x)

2.  function float: ub_array(array [$U] of var opt float: x)

3.  function set of int: ub_array(array [$U] of var set of int: x)
1, 2.
Return maximum of all upper bounds of the elements in array x
  1. Return union of all upper bounds of the elements in array x