Overview Schemas Index

MATHEMATICAL_FUNCTIONS_SCHEMA (jsdai.SMathematical_functions_schema)


FUNCTION simplify_maths_space
          (spc : maths_space) : maths_space;

 LOCAL stypes : SET  OF  STRING := stripped_typeof ( spc ) ; sset : SET  OF  maths_value ; zset : SET OF  maths_value := [ ] ; zval : maths_value ; zspc : maths_space ; zallint : BOOLEAN := TRUE ; zint , zmin , zmax : INTEGER ; factors : LIST  OF  maths_space ; zfactors : LIST OF maths_space := [ ] ; rspc : maths_space ; END_LOCAL ; IF  'finite_space' IN  stypes THEN  sset := spc \ finite_space . members ; REPEAT  i := 1 TO  SIZEOF  ( sset ) ; zval := simplify_maths_value ( sset [ i ] ) ; zset := zset + [ zval ] ; IF  zallint AND  ( 'integer' IN  TYPEOF ( zval ) ) THEN  zint := zval ; IF  i = 1 THEN  zmin := zint ; zmax := zint ; ELSE  IF  zint < zmin THEN  zmin := zint ; END_IF  ; IF  zint > zmax THEN  zmax := zint ; END_IF  ; END_IF  ; ELSE zallint := FALSE ; END_IF  ; END_REPEAT  ; IF  zallint AND ( SIZEOF  ( zset ) = zmax - zmin + 1 ) THEN  RETURN  ( make_finite_integer_interval ( zmin , zmax ) ) ; END_IF  ; RETURN  ( make_finite_space ( zset ) ) ; END_IF  ; IF  'uniform_product_space' IN  stypes THEN  zspc := simplify_maths_space ( spc \ uniform_product_space . base ) ; RETURN  ( make_uniform_product_space ( zspc , spc \ uniform_product_space . exponent ) ) ; END_IF  ; IF  'listed_product_space' IN  stypes THEN  factors := spc \ listed_product_space . factors ; REPEAT i := 1 TO SIZEOF ( factors ) ; INSERT ( zfactors , simplify_maths_space ( factors [ i ] ) , i - 1 ) ; END_REPEAT ; RETURN  ( make_listed_product_space ( zfactors ) ) ; END_IF  ; IF  'extended_tuple_space' IN  stypes THEN  zspc := simplify_maths_space ( spc \ extended_tuple_space . base ) ; rspc := simplify_maths_space ( spc \ extended_tuple_space . extender ) ; RETURN  ( make_extended_tuple_space ( zspc , rspc ) ) ; END_IF  ; IF 'function_space' IN stypes THEN zspc := simplify_maths_space ( spc \ function_space . domain_argument ) ; rspc := simplify_maths_space ( spc \ function_space . range_argument ) ; RETURN  ( make_function_space ( spc \ function_space . domain_constraint , zspc , spc \ function_space . range_constraint , rspc ) ) ; END_IF ; RETURN ( spc ) ; 

END_FUNCTION; -- simplify_maths_space

public class FSimplify_maths_space
          public static Value run(SdaiContext _context, Value spc)