let add_in_list (name0 : string) (value : string) (name : string) (var : string) : unit =
         if(is_a_list var)
        then(
                let list_to_refer = get_value_of_var name var in
                let old_value_of_list = if(Hashtbl.mem var_value ("x",list_to_refer)) then (Hashtbl.find var_value ("x",list_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_list in
                                        if(decomp<>[] && not(List.mem val_to_add (cdr decomp))) 
                                        then ("list("^(list2string "," (val_to_add::(cdr decomp)))^")")
                                        else if(decomp=[]) then ("list("^val_to_add^")")
                                        else old_value_of_list
                in
                if(old_value_of_list<>value_aux)
                then(
                        let name_aux = ("x",list_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)
                )
        )