Overview Schemas Index

MATHEMATICAL_FUNCTIONS_SCHEMA (jsdai.SMathematical_functions_schema)


FUNCTION values_space_of
          (expr : generic_expression) : maths_space;

LOCAL
    e_prefix : STRING  := 'ISO13584_EXPRESSIONS_SCHEMA.';
    typenames : SET OF  STRING := TYPEOF (expr);
  END_LOCAL;
  IF  (schema_prefix + 'MATHS_VARIABLE') IN  typenames THEN
    RETURN  (expr\maths_variable.values_space);
  END_IF;
  IF  (e_prefix + 'EXPRESSION') IN  typenames THEN
    IF  (e_prefix + 'NUMERIC_EXPRESSION') IN  typenames THEN
      IF  expr\numeric_expression.is_int THEN
        IF  (e_prefix + 'INT_LITERAL') IN  typenames THEN
          RETURN  (make_finite_space ([expr\int_literal.the_value]));
        ELSE
          RETURN  (the_integers);
        END_IF;
      ELSE
        IF  (e_prefix + 'REAL_LITERAL') IN  typenames THEN
          RETURN  (make_finite_space ([expr\real_literal.the_value]));
        ELSE
          RETURN  (the_reals);
        END_IF;
      END_IF;
    END_IF;
    IF  (e_prefix + 'BOOLEAN_EXPRESSION') IN  typenames THEN
      IF  (e_prefix + 'BOOLEAN_LITERAL') IN  typenames THEN
        RETURN  (make_finite_space ([expr\boolean_literal.the_value]));
      ELSE
        RETURN  (the_booleans);
      END_IF;
    END_IF;
    IF  (e_prefix + 'STRING_EXPRESSION') IN  typenames THEN
      IF  (e_prefix + 'STRING_LITERAL') IN  typenames THEN
        RETURN  (make_finite_space ([expr\string_literal.the_value]));
      ELSE
        RETURN  (the_strings);
      END_IF;
    END_IF;
    RETURN  (?);  -- UNKNOWN SUBTYPE OF  expression
  END_IF;
  IF  (schema_prefix + 'MATHS_FUNCTION') IN  typenames THEN
    IF  expression_is_constant (expr) THEN
      RETURN  (make_finite_space ([expr]));
    ELSE
      RETURN  (make_function_space (sc_equal, expr\maths_function.domain,
        sc_equal, expr\maths_function.range));
    END_IF;
  END_IF;
  IF  (schema_prefix + 'FUNCTION_APPLICATION') IN  typenames THEN
    RETURN  (expr\function_application.func.range);
  END_IF;
  IF  (schema_prefix + 'MATHS_SPACE') IN  typenames THEN
    IF  expression_is_constant (expr) THEN
      RETURN  (make_finite_space ([expr]));
    ELSE
      -- This CASE cannot occur IN  this version OF the schema.
      -- When it becomes possible, the subtypes should be analysed and
      -- more finely defined spaces returned.
      RETURN  (make_elementary_space (es_maths_spaces));
    END_IF;
  END_IF;
  IF  (schema_prefix + 'DEPENDENT_VARIABLE_DEFINITION') IN  typenames THEN
    RETURN  (values_space_of (expr\unary_generic_expression.operand));
  END_IF;
  IF  (schema_prefix + 'COMPLEX_NUMBER_LITERAL') IN  typenames THEN
    RETURN  (make_finite_space ([expr]));
  END_IF;
  IF  (schema_prefix + 'LOGICAL_LITERAL') IN  typenames THEN
    RETURN  (make_finite_space ([expr\logical_literal.lit_value]));
  END_IF;
  IF  (schema_prefix + 'BINARY_LITERAL') IN  typenames THEN
    RETURN  (make_finite_space ([expr\binary_literal.lit_value]));
  END_IF;
  IF  (schema_prefix + 'MATHS_ENUM_LITERAL') IN  typenames THEN
    RETURN  (make_finite_space ([expr\maths_enum_literal.lit_value]));
  END_IF;
  IF  (schema_prefix + 'REAL_TUPLE_LITERAL') IN  typenames THEN
    RETURN  (make_finite_space ([expr\real_tuple_literal.lit_value]));
  END_IF;
  IF  (schema_prefix + 'INTEGER_TUPLE_LITERAL') IN  typenames THEN
    RETURN  (make_finite_space ([expr\integer_tuple_literal.lit_value]));
  END_IF;
  IF  (schema_prefix + 'ATOM_BASED_LITERAL') IN  typenames THEN
    RETURN  (make_finite_space ([expr\atom_based_literal.lit_value]));
  END_IF;
  IF  (schema_prefix + 'MATHS_TUPLE_LITERAL') IN  typenames THEN
    RETURN  (make_finite_space ([expr\maths_tuple_literal.lit_value]));
  END_IF;
  IF  (schema_prefix + 'PARTIAL_DERIVATIVE_EXPRESSION') IN  typenames THEN
    RETURN  (drop_numeric_constraints (values_space_of (
      expr\partial_derivative_expression.derivand)));
  END_IF;
  IF (schema_prefix + 'DEFINITE_INTEGRAL_EXPRESSION') IN typenames THEN
    RETURN  (drop_numeric_constraints (values_space_of (
      expr\definite_integral_expression.integrand)));
  END_IF;
  RETURN (?);

END_FUNCTION; -- values_space_of

public class FValues_space_of
          public static Value run(SdaiContext _context, Value expr)