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)
)
)