let operations_test_treatment_left (name : string) (state : string) : bool =
        let rec test t =
                let rec test_aux exp =
                        let decomp = decompose exp in
                        match decomp with [] -> exp
                                        |x::ls -> if(List.mem x ["not" ; "contains" ; "idequal" ; "equal"])
                                                then (string_of_bool (test (x::ls)))
                                                else (x^"("^(list2string "," (List.map test_aux ls))^")")
                in
                let rec var2test exp =
                        let decomp = decompose exp in
                        if(decomp<>[]) then ((car decomp)^"("^(list2string "," (List.map var2test (cdr decomp)))^")")
                        else if(is_a_value exp) then exp
                        else if(is_a_test_var exp) then exp
                        else if(is_a_var exp) then ("Test_"^exp)
                        else exp
                in
                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 (test_aux (caddr d) )in
                                                        (prerr_string (arg1^" "^arg2^"\n"));
                                                        (match_message name state (var2test arg1) name state (var2test 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 (cadr d) in
                                                        ((int_of_string arg1)<=(int_of_string arg2)) && (test ls)
                                                )
                                                else if((car d)="not"then (
                                                        prerr_string ((cadr d)^"\n");
                                                        not(test [(cadr d)]) && (test ls)
                                                )
                                                else (test ls);
                                        )
                                        else (test ls);
        in
        match (find_operation_of_state name state) with ((gt,_),_) -> (test gt)