let assign_var_of_state (name : string) (m1 : string) (name2 : string) (m2 : string) : unit =
let (exist_match,sub) = get_match_message_story name m1 m1 name2 m2 m2 (!untyped_variable) in
if(exist_match<>(-1))
then (
if(sub<>[]) then assign_sub name2 sub
)
else (
let rec trans l =
match l with [] -> ""
|[x] -> x
|(x::ls) -> "pair("^x^","^(trans ls)^")"
in
let d1 = trans (cdr(decompose ("x("^m1^")"))) in
let d2 = trans (cdr(decompose ("x("^m2^")"))) in
let res = match_message name m1 d1 name2 m2 d2 in
if(res)
then(
let (exist_match,sub) = get_match_message_story name m1 d1 name2 m2 d2 (!untyped_variable) in
if(exist_match<>(-1))
then(
add_in_match_message_story name m1 m1 name2 m2 m2 (!untyped_variable) sub;
assign_sub name2 sub
)
)
)