2.1.1. Basic data types

We provide the following basic data types:

  • πšŠπšπš˜πš– corresponds to an atom. Predefined atoms are π™Όπ™Έπ™½π™Έπ™½πšƒ and π™Όπ™°πš‡π™Έπ™½πšƒ, which respectively correspond to the smallest and to the largest integer.

  • πš’πš—πš corresponds to an integer value.

  • πšπšŸπšŠπš› corresponds to a domain variable. A domain variable V is a variable that will be assigned an integer value taken from an initial finite set of integer values denoted by π‘‘π‘œπ‘š(V). V Μ² and V Β― respectively denote the minimum and the maximum values of π‘‘π‘œπ‘š(V).

  • πšπšπšŸπšŠπš› corresponds to a possibly unbounded domain variable. A possibly unbounded domain variable is a variable that will be assigned an integer value from an initial finite set of integer values denoted by π‘‘π‘œπ‘š(V) or from interval minus infinity, plus infinity. This type is required for declaring the domain of a variable. It is also required by some systems in the context of specific constraints like arithmetic or πšŽπš•πšŽπš–πšŽπš—πš constraints.

  • πšœπš’πš—πš corresponds to a finite set of integer values.

  • πšœπšŸπšŠπš› corresponds to a set variable. A set variable V is a variable that will be assigned to a finite set of integer values. Its lower bound V Μ² denotes the set of integer values that for sure belong to V, while its upper bound V Β― denotes the set of integer values that may belong to V. π‘‘π‘œπ‘š(V)={𝐯 1 ,...,𝐯 𝐧 ,v n+1 ,...,v m } is a shortcut for combining the lower and upper bounds of V in one single notation:

    • Bold values designate those values that only belong to V Μ².

    • Plain values indicate those values that belong to V Β― and not to V Μ².

  • πš–πš’πš—πš corresponds to a multiset of integer values.

  • πš–πšŸπšŠπš› corresponds to a multiset variable. A multiset variable is a variable that will be assigned to a multiset of integer values.

  • πš›πšŽπšŠπš• corresponds to a real number.

  • πš›πšŸπšŠπš› corresponds to a real variable. A real variable is a variable that will be assigned a real number taken from an initial finite set of intervals. A real number is usually represented by an interval of two floating point numbers.

Beside domain, set, multiset and float variables we have not yet introduced graph variablesΒ [Dooms06]. A graph variable is currently simulated by using one set variable for each vertex of the graph (see the third example of type declaration ofΒ 2.1.2).