FUNCTION subspace_of_es
(spc : maths_space, es : elementary_space_enumerators) : LOGICAL;
LOCAL types : SET OF STRING := stripped_typeof(spc); END_LOCAL; IF NOT EXISTS (spc) OR NOT EXISTS (es) THEN RETURN (FALSE); END_IF; IF 'ELEMENTARY_SPACE' IN types THEN RETURN (es_subspace_of_es(spc\elementary_space.space_id,es)); END_IF; IF 'FINITE_SPACE' IN types THEN RETURN (all_members_of_es(spc\finite_space.members,es)); END_IF; CASE es OF es_numbers : RETURN ( ('FINITE_INTEGER_INTERVAL' IN types) OR ('INTEGER_INTERVAL_FROM_MIN' IN types) OR ('INTEGER_INTERVAL_TO_MAX' IN types) OR ('FINITE_REAL_INTERVAL' IN types) OR ('REAL_INTERVAL_FROM_MIN' IN types) OR ('REAL_INTERVAL_TO_MAX' IN types) OR ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types) OR ('POLAR_COMPLEX_NUMBER_REGION' IN types) ); es_complex_numbers : RETURN ( ('CARTESIAN_COMPLEX_NUMBER_REGION' IN types) OR ('POLAR_COMPLEX_NUMBER_REGION' IN types) ); es_reals : RETURN ( ('FINITE_REAL_INTERVAL' IN types) OR ('REAL_INTERVAL_FROM_MIN' IN types) OR ('REAL_INTERVAL_TO_MAX' IN types) ); es_integers : RETURN ( ('FINITE_INTEGER_INTERVAL' IN types) OR ('INTEGER_INTERVAL_FROM_MIN' IN types) OR ('INTEGER_INTERVAL_TO_MAX' IN types) ); es_logicals : RETURN (FALSE); es_booleans : RETURN (FALSE); es_strings : RETURN (FALSE); es_binarys : RETURN (FALSE); es_maths_spaces : RETURN (FALSE); es_maths_functions : RETURN ('FUNCTION_SPACE' IN types); es_generics : RETURN (TRUE); END_CASE; RETURN (UNKNOWN); END_FUNCTION; -- subspace_of_es
|