FUNCTION function_is_2d_table
(func : maths_function) : BOOLEAN;
LOCAL temp : maths_space; pspace : product_space; itvl1, itvl2 : finite_integer_interval; END_LOCAL; IF NOT EXISTS (func) THEN RETURN (FALSE); END_IF; IF space_dimension (func.domain) <> 1 THEN RETURN (FALSE); END_IF; temp := factor1 (func.domain); IF NOT ('PRODUCT_SPACE' IN stripped_typeof(temp)) THEN RETURN (FALSE); END_IF; pspace := temp; IF space_dimension (pspace) <> 2 THEN RETURN (FALSE); END_IF; temp := factor1 (pspace); IF NOT ('FINITE_INTEGER_INTERVAL' IN stripped_typeof(temp)) THEN RETURN (FALSE); END_IF; itvl1 := temp; temp := factor_space (pspace, 2); IF NOT ('FINITE_INTEGER_INTERVAL' IN stripped_typeof(temp)) THEN RETURN (FALSE); END_IF; itvl2 := temp; RETURN (bool((itvl1.min = itvl2.min) AND ((itvl1.min = 0) OR (itvl1.min = 1)))); END_FUNCTION; -- function_is_2d_table
|