|
FUNCTION derive_definite_integral_domain (igrl : definite_integral_function) : tuple_space; FUNCTION process_product_space ( spc : product_space ; idx , prefix : INTEGER ; vdomn : maths_space ) : product_space ; LOCAL uspc : uniform_product_space ; expnt : INTEGER ; factors : LIST OF maths_space ; END_LOCAL ; IF ( schema_prefix + 'uniform_product_space' ) IN TYPEOF ( spc ) THEN uspc := spc ; expnt := uspc . exponent + prefix ; IF idx <= uspc . exponent THEN expnt := expnt - 1 ; END_IF ; IF expnt = 0 THEN RETURN ( make_listed_product_space ( [ ] ) ) ; ELSE RETURN ( make_uniform_product_space ( uspc . base , expnt ) ) ; END_IF ; ELSE factors := spc \ listed_product_space . factors ; IF idx <= SIZEOF ( factors ) THEN REMOVE ( factors , idx ) ; END_IF ; IF prefix > 0 THEN INSERT ( factors , vdomn , 0 ) ; IF prefix > 1 THEN INSERT ( factors , vdomn , 0 ) ; END_IF ; END_IF ; RETURN ( make_listed_product_space ( factors ) ) ; END_IF ; END_FUNCTION ; LOCAL idomn : tuple_space := igrl . integrand . domain ; types : SET OF STRING := TYPEOF ( idomn ) ; idx : INTEGER := igrl . variable_of_integration ; tupled : BOOLEAN := bool ( ( ( space_dimension ( idomn ) = 1 ) AND ( ( schema_prefix + 'tuple_space' ) IN types ) ) ) ; prefix : INTEGER := 0 ; espc : extended_tuple_space ; vdomn : maths_space ; END_LOCAL ; IF tupled THEN idomn := factor1 ( idomn ) ; types := TYPEOF ( idomn ) ; END_IF ; IF igrl . lower_limit_neg_infinity THEN prefix := prefix + 1 ; END_IF ; IF igrl . upper_limit_pos_infinity THEN prefix := prefix + 1 ; END_IF ; vdomn := factor_space ( idomn , idx ) ; IF ( schema_prefix + 'extended_tuple_space' ) IN types THEN espc := idomn ; idomn := make_extended_tuple_space ( process_product_space ( espc . base , idx , prefix , vdomn ) , espc . extender ) ; ELSE idomn := process_product_space ( idomn , idx , prefix , vdomn ) ; END_IF ; IF tupled THEN RETURN ( one_tuples_of ( idomn ) ) ; ELSE RETURN ( idomn ) ; END_IF ; END_FUNCTION; -- derive_definite_integral_domain |
|
public class FDerive_definite_integral_domain public static Value run(SdaiContext _context, Value igrl) |