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