There exist only two basic data types in CSI(C&F):

*numerical data type (floating point numbers, integers, booleans)*and*alphanumerical data type (strings)*

There is no special *integer* type in CSI(C&F), they
are treated as a subset of floating point numbers. The range of
floating point numbers depends on the system used. Strings are
restricted not to exceed a maximum length of 128 characters. This
seems to be a silly restriction, but as mentioned in the introduction,
CSI(C&F) was not designed to be a complete, general-purpose
programming language. So this restriction should be irrelevant
for most tasks of constraint satisfaction problems.

The two basic data types own different semantics, but are implemented by one and the same concept. Both have the following internal representation:

name name of Variable formula stores a formula for anumerical variable or a string for an alphanumerical variable value holds the value of a numerical variable or the numerical equivalent of an alphanumerical variable

CSI(C&F)'s data space consists of a linear sequence of variables with the format we have just seen. A brief example at the end of this section will figure out this concept.

Whenever a fuzzy variable is declared or evaluated, a numerical variable is created which holds the name of the fuzzy variable, the name of the associated ParameterSet, and the defuzzified value of the fuzzy variable.

name name of FUYYZVAR formula name of PARAMETERSET object value defuzzified value of FUYYZVAR

This guarantees, that fuzzy variables, once defuzzified, can be used in other regular expressions and computations. At this time we should remember, that fuzzy variables have two representations in CSI(C&F): on the one hand they are stored in the "normal" data space so that they can be accessed like any other variable, on the other hand it's obvious, that a fuzzy variable has a second, much more complex structure for fuzzy computation too. This structure will be discussed in detail in section 7.5.

To illustrate the memory management for variables we give a short example. The following assignments:

` LET Name$ = "A"`

` LET fahr = 0`

` LET celsius = (5/9)*(fahr-32)`

` FUZZYVAR fuzzyvar default_parameterset`

` SET fuzzyvar = 3.4`

` EVAL fuzzyvar`

added to an empty data space would result in the following memory structure

name Name$ formula "A" value 64 name fahr formula "0" value 0 name celsius formula "(5/9)*(fahr-32)" value -17.77777778 name fuzzyvar formula default_parameterset value 48.33333333