let assign_sub (name_to_assign : string) (sub : (string * string * string * string) list) : unit =
let rec normalize name v =
let decomp = decompose v in
if(decomp<>[]) then ((normalize name (car decomp))^"("^(list2string "," (List.map (fun e -> normalize name e) (cdr decomp)))^")")
else if (is_a_var v) then normalize name (get_value_of_var name v)
else v
in
List.iter
(fun (name1,value,name2,var) ->
if(name2=name_to_assign)
then add_var_value name1 (normalize name1 value) name2 var
)
sub