FUNCTION function_is_table
(func : maths_function) : BOOLEAN;
LOCAL tspace : tuple_space; temp : maths_space; base : INTEGER; END_LOCAL; IF NOT EXISTS (func) THEN RETURN (FALSE); END_IF; tspace := func.domain; IF (space_dimension (tspace) = 1) AND ((schema_prefix + 'TUPLE_SPACE') IN TYPEOF (factor1 (tspace))) THEN tspace := factor1 (tspace); END_IF; IF NOT ((schema_prefix + 'PRODUCT_SPACE') IN TYPEOF (tspace)) THEN RETURN (FALSE); END_IF; temp := factor1 (tspace); IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF (temp)) THEN RETURN (FALSE); END_IF; base := temp\finite_integer_interval.min; IF (base <> 0) AND (base <> 1) THEN RETURN (FALSE); END_IF; REPEAT i := 2 TO space_dimension (tspace); temp := factor_space (tspace, i); IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF (temp)) THEN RETURN (FALSE); END_IF; IF temp\finite_integer_interval.min <> base THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE); END_FUNCTION; -- function_is_table
|