Overview Schemas Index

MATHEMATICAL_FUNCTIONS_SCHEMA (jsdai.SMathematical_functions_schema)


FUNCTION assoc_product_space
          (ts1 : tuple_space, ts2 : tuple_space) : tuple_space;

 LOCAL types1 : SET  OF  STRING  := stripped_typeof ( ts1 ) ; types2 : SET OF  STRING := stripped_typeof ( ts2 ) ; up1 , up2 : uniform_product_space := make_uniform_product_space ( the_reals , 1 ) ; lp1 , lp2 , lps : listed_product_space := the_zero_tuple_space ; et1 , et2 , ets : extended_tuple_space := the_tuples ; use_up1 , use_up2 , use_lp1 , use_lp2 : BOOLEAN ; factors : LIST OF maths_space := [ ] ; tspace : tuple_space ; END_LOCAL ; IF  'uniform_product_space' IN  types1 THEN  up1 := ts1 ; use_up1 := TRUE  ; use_lp1 := FALSE  ; ELSE  IF  'listed_product_space' IN  types1 THEN  lp1 := ts1 ; use_up1 := FALSE  ; use_lp1 := TRUE  ; ELSE  IF  NOT  ( 'extended_tuple_space' IN  types1 ) THEN  RETURN  ( ? ) ; END_IF  ; et1 := ts1 ; use_up1 := FALSE  ; use_lp1 := FALSE  ; END_IF  ; END_IF  ; IF  'uniform_product_space' IN  types2 THEN  up2 := ts2 ; use_up2 := TRUE  ; use_lp2 := FALSE  ; ELSE  IF  'listed_product_space' IN  types2 THEN  lp2 := ts2 ; use_up2 := FALSE  ; use_lp2 := TRUE ; ELSE  IF  NOT ( 'extended_tuple_space' IN types2 ) THEN  RETURN  ( ? ) ; END_IF  ; et2 := ts2 ; use_up2 := FALSE  ; use_lp2 := FALSE ; END_IF  ; END_IF  ; IF  use_up1 THEN  IF  use_up2 THEN  IF  up1 . base = up2 . base THEN  tspace := make_uniform_product_space ( up1 . base , up1 . exponent + up2 . exponent ) ; ELSE  factors := [ up1 . base : up1 . exponent , up2 . base : up2 . exponent ] ; tspace := make_listed_product_space ( factors ) ; END_IF  ; ELSE  IF  use_lp2 THEN  factors := [ up1 . base : up1 . exponent ] ; factors := factors + lp2 . factors ; tspace := make_listed_product_space ( factors ) ; ELSE  tspace := assoc_product_space ( up1 , et2 . base ) ; tspace := make_extended_tuple_space ( tspace , et2 . extender ) ; END_IF  ; END_IF  ; ELSE  IF  use_lp1 THEN  IF  use_up2 THEN  factors := [ up2 . base : up2 . exponent ] ; factors := lp1 . factors + factors ; tspace := make_listed_product_space ( factors ) ; ELSE  IF  use_lp2 THEN  tspace := make_listed_product_space ( lp1 . factors + lp2 . factors ) ; ELSE  tspace := assoc_product_space ( lp1 , et2 . base ) ; tspace := make_extended_tuple_space ( tspace , et2 . extender ) ; END_IF  ; END_IF  ; ELSE  IF  use_up2 THEN  IF  et1 . extender = up2 . base THEN  tspace := assoc_product_space ( et1 . base , up2 ) ; tspace := make_extended_tuple_space ( tspace , et1 . extender ) ; ELSE  RETURN  ( ? ) ; END_IF  ; ELSE  IF  use_lp2 THEN  factors := lp2 . factors ; REPEAT i := 1 TO SIZEOF ( factors ) ; IF  et1 . extender <> factors [ i ] THEN  RETURN  ( ? ) ; END_IF  ; END_REPEAT ; tspace := assoc_product_space ( et1 . base , lp2 ) ; tspace := make_extended_tuple_space ( tspace , et1 . extender ) ; ELSE  IF et1 . extender = et2 . extender THEN tspace := assoc_product_space ( et1 , et2 . base ) ; ELSE RETURN  ( ? ) ; END_IF  ; END_IF  ; END_IF  ; END_IF  ; END_IF ; RETURN ( tspace ) ; 

END_FUNCTION; -- assoc_product_space

public class FAssoc_product_space
          public static Value run(SdaiContext _context, Value ts1, Value ts2)