FUNCTION definite_integral_expr_check
(operands : LIST [2:?] OF generic_expression, lowerinf : BOOLEAN, upperinf : BOOLEAN) : BOOLEAN;
LOCAL nops : INTEGER := 2; vspc : maths_space; dim : nonnegative_integer; k : positive_integer; bspc : maths_space; END_LOCAL; IF NOT lowerinf THEN nops := nops + 1; END_IF; IF NOT upperinf THEN nops := nops + 1; END_IF; IF SIZEOF (operands) <> nops THEN RETURN (FALSE); END_IF; IF NOT ('GENERIC_VARIABLE' IN stripped_typeof(operands[2])) THEN RETURN (FALSE); END_IF; IF NOT has_values_space (operands[2]) THEN RETURN (FALSE); END_IF; vspc := values_space_of (operands[2]); IF NOT ('REAL_INTERVAL' IN stripped_typeof(vspc)) THEN RETURN (FALSE); END_IF; IF lowerinf THEN IF min_exists (vspc) THEN RETURN (FALSE); END_IF; k := 3; ELSE IF NOT has_values_space (operands[3]) THEN RETURN (FALSE); END_IF; bspc := values_space_of (operands[3]); IF NOT compatible_spaces (bspc, vspc) THEN RETURN (FALSE); END_IF; k := 4; END_IF; IF upperinf THEN IF max_exists (vspc) THEN RETURN (FALSE); END_IF; ELSE IF NOT has_values_space (operands[k]) THEN RETURN (FALSE); END_IF; bspc := values_space_of (operands[k]); IF NOT compatible_spaces (bspc, vspc) THEN RETURN (FALSE); END_IF; END_IF; RETURN (TRUE); END_FUNCTION; -- definite_integral_expr_check
|