let add_in_set (name0 : string) (value : string) (name : string) (var : string) : unit =
         if(is_a_set var)
        then(
                let set_to_refer = get_value_of_var name var in
                let old_value_of_set = if(Hashtbl.mem var_value ("x",set_to_refer)) then (Hashtbl.find var_value ("x",set_to_refer)) else "" in
                let value_aux =         let val_to_add = if((is_a_var value))
                                                        then (get_value_of_var name0 value)
                                                         else value in
                                        let decomp = decompose old_value_of_set in
                                        if(decomp<>[] && not(List.mem val_to_add (cdr decomp))) 
                                        then ("set("^(list2string "," (val_to_add::(cdr decomp)))^")")
                                        else if(decomp=[]) then ("set("^val_to_add^")")
                                        else old_value_of_set
                in
                if(old_value_of_set<>value_aux)
                then(
                        let name_aux = ("x",set_to_refer) in
                         add_in_variable_change name_aux;
                        local_variable_change:= name_aux::(!local_variable_change);
                        (Hashtbl.add var_value name_aux value_aux)
                )
        )