7.3.2 Data Types and Sizes

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

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