let operations_test_treatment_right (name : string) (state : string) : bool =
let rec test t =
match t with [] -> true
|(x::ls) -> let d = decompose x in
if(d<>[])
then(
if((car d)="contains") then(
in_aggregation name (cadr d) name (caddr d)
)
else if((car d)="equal" || (car d)="idequal") then(
let arg1 = if(is_a_var (cadr d)) then (get_value_of_var name (cadr d))
else if(is_a_value (cadr d)) then (cadr d)
else (string_of_bool (test [(cadr d)] ))in
let arg2 = if(is_a_var (caddr d)) then (get_value_of_var name (caddr d))
else if(is_a_value (caddr d)) then (caddr d)
else (string_of_bool (test [(caddr d)] ))in
(match_message name state arg1 name state arg2) && (test ls)
)
else if((car d)="leq") then (
let arg1 = if(is_a_var (cadr d)) then (get_value_of_var name (cadr d)) else (cadr d) in
let arg2 = if(is_a_var (caddr d)) then (get_value_of_var name (caddr d)) else (caddr d) in
((int_of_string arg1)<=(int_of_string arg2)) && (test ls)
)
else if((car d)="not") then (
not(test [(cadr d)]) && (test ls)
)
else (test ls)
)
else (test ls);
in
match (find_operation_of_state name state) with (_,(dt,_)) -> (test dt)