|
FUNCTION equal_maths_values (val1 : maths_value, val2 : maths_value) : LOGICAL; FUNCTION mem_of_vs ( val1 , val2 : maths_value ) : LOGICAL ; IF NOT has_values_space ( val2 ) THEN RETURN ( UNKNOWN ) ; END_IF ; IF NOT member_of ( val1 , values_space_of ( val2 ) ) THEN RETURN ( FALSE ) ; END_IF ; RETURN ( UNKNOWN ) ; END_FUNCTION ; LOCAL types1 , types2 : SET OF STRING ; list1 , list2 : LIST OF maths_value ; cum : LOGICAL := TRUE ; END_LOCAL ; IF NOT EXISTS ( val1 ) OR NOT EXISTS ( val2 ) THEN RETURN ( FALSE ) ; END_IF ; IF val1 = val2 THEN RETURN ( TRUE ) ; END_IF ; types1 := stripped_typeof ( val1 ) ; types2 := stripped_typeof ( val2 ) ; IF ( 'maths_atom' IN types1 ) OR ( 'complex_number_literal' IN types1 ) THEN IF 'maths_atom' IN types2 THEN RETURN ( FALSE ) ; END_IF ; IF 'complex_number_literal' IN types2 THEN RETURN ( FALSE ) ; END_IF ; IF 'list' IN types2 THEN RETURN ( FALSE ) ; END_IF ; IF 'maths_space' IN types2 THEN RETURN ( FALSE ) ; END_IF ; IF 'maths_function' IN types2 THEN RETURN ( FALSE ) ; END_IF ; IF 'generic_expression' IN types2 THEN RETURN ( mem_of_vs ( val1 , val2 ) ) ; END_IF ; RETURN ( UNKNOWN ) ; END_IF ; IF ( 'maths_atom' IN types2 ) OR ( 'complex_number_literal' IN types2 ) THEN RETURN ( equal_maths_values ( val2 , val1 ) ) ; END_IF ; IF 'list' IN types1 THEN IF 'list' IN types2 THEN list1 := val1 ; list2 := val2 ; IF SIZEOF ( list1 ) <> SIZEOF ( list2 ) THEN RETURN ( FALSE ) ; END_IF ; REPEAT i := 1 TO SIZEOF ( list1 ) ; cum := cum AND equal_maths_values ( list1 [ i ] , list2 [ i ] ) ; IF cum = FALSE THEN RETURN ( FALSE ) ; END_IF ; END_REPEAT ; RETURN ( cum ) ; END_IF ; IF 'maths_space' IN types2 THEN RETURN ( FALSE ) ; END_IF ; IF 'maths_function' IN types2 THEN RETURN ( FALSE ) ; END_IF ; IF 'generic_expression' IN types2 THEN RETURN ( mem_of_vs ( val1 , val2 ) ) ; END_IF ; RETURN ( UNKNOWN ) ; END_IF ; IF 'list' IN types2 THEN RETURN ( equal_maths_values ( val2 , val1 ) ) ; END_IF ; IF 'maths_space' IN types1 THEN IF 'maths_space' IN types2 THEN RETURN ( equal_maths_spaces ( val1 , val2 ) ) ; END_IF ; IF 'maths_function' IN types2 THEN RETURN ( FALSE ) ; END_IF ; IF 'generic_expression' IN types2 THEN RETURN ( mem_of_vs ( val1 , val2 ) ) ; END_IF ; RETURN ( UNKNOWN ) ; END_IF ; IF 'maths_space' IN types2 THEN RETURN ( equal_maths_values ( val2 , val1 ) ) ; END_IF ; IF 'maths_function' IN types1 THEN IF 'maths_function' IN types2 THEN RETURN ( equal_maths_functions ( val1 , val2 ) ) ; END_IF ; IF 'generic_expression' IN types2 THEN RETURN ( mem_of_vs ( val1 , val2 ) ) ; END_IF ; RETURN ( UNKNOWN ) ; END_IF ; IF 'maths_function' IN types2 THEN RETURN ( equal_maths_values ( val2 , val1 ) ) ; END_IF ; IF ( 'generic_expression' IN types1 ) AND ( 'generic_expression' IN types2 ) THEN IF NOT has_values_space ( val1 ) OR NOT has_values_space ( val2 ) THEN RETURN ( UNKNOWN ) ; END_IF ; IF NOT compatible_spaces ( values_space_of ( val1 ) , values_space_of ( val2 ) ) THEN RETURN ( FALSE ) ; END_IF ; END_IF ; RETURN ( UNKNOWN ) ; END_FUNCTION; -- equal_maths_values |
|
public class FEqual_maths_values public static Value run(SdaiContext _context, Value val1, Value val2) |