FUNCTION drop_numeric_constraints
(spc : maths_space) : maths_space;
LOCAL typenames : SET OF STRING := stripped_typeof(spc); tspc : listed_product_space; factors : LIST OF maths_space := []; xspc : extended_tuple_space; END_LOCAL; IF 'UNIFORM_PRODUCT_SPACE' IN typenames THEN RETURN (make_uniform_product_space (drop_numeric_constraints ( spc\uniform_product_space.base), spc\uniform_product_space.exponent)); END_IF; IF 'LISTED_PRODUCT_SPACE' IN typenames THEN tspc := spc; REPEAT i := 1 TO SIZEOF (tspc.factors); INSERT (factors, drop_numeric_constraints (tspc.factors[i]), i-1); END_REPEAT; RETURN (make_listed_product_space (factors)); END_IF; IF 'EXTENDED_TUPLE_SPACE' IN typenames THEN xspc := spc; RETURN (make_extended_tuple_space (drop_numeric_constraints (xspc.base), drop_numeric_constraints (xspc.extender))); END_IF; IF subspace_of_es (spc, es_numbers) THEN RETURN (number_superspace_of (spc)); END_IF; RETURN (spc); END_FUNCTION; -- drop_numeric_constraints
|