let transcript_receiver (mess : string) : string =
        let add mess1 mess2 =
                if(not(Hashtbl.mem transcript_table_receiver mess2) && (mess=mess1 || not(Hashtbl.mem transcript_table_receiver mess1)))
                then(
                Hashtbl.add transcript_table_receiver mess1 mess2;
                if(mess1<>mess2) then Hashtbl.add transcript_table_receiver mess2 mess1;
                );
                mess2
        in
        let rec aux mess =
                if(Hashtbl.mem transcript_table_receiver mess) then Hashtbl.find transcript_table_receiver mess
                else(
                        let l_mess = decompose mess in
                        (add mess
                                (if(l_mess=[]) then(
                                        if(is_a_test_var mess) then get_name_of_test_var mess
                                        else if(is_a_var mess) then mess^"'"
                                        else mess
                                )
                                else if((car l_mess)="pair"then (list2string "." (List.map (fun e -> aux e) (cdr l_mess)))
                                else if((car l_mess)="scrypt" || (car l_mess)="crypt"then (
                                                let tmp=decompose (cadr l_mess) in
                                                if(tmp<>[] && (car tmp)="pair")
                                                then "{"^(aux(caddr l_mess))^"}_{"^(aux (cadr l_mess))^"}"
                                                else "{"^(aux(caddr l_mess))^"}_"^(aux (cadr l_mess));
                                        )
                                else if((car l_mess)="apply"then (aux(cadr l_mess))^"("^ (list2string "," (List.map aux (cddr l_mess)) ) ^")"
                                else if((car l_mess)="exp"then (car l_mess)^"("^ (list2string "," (List.map aux (cdr l_mess)) ) ^")"
                                else if((car l_mess)="xor"then (car l_mess)^"("^ (list2string "," (List.map aux (cdr l_mess)) ) ^")"
                                else if((car l_mess)="inv"then (car l_mess)^"("^ (aux (cadr l_mess)) ^")"
                                else         let tmp =         (list2string ","        
                                                                (List.map (fun s ->         add s (aux s)) 
                                                                (cdr l_mess) ) 
                                                        ) in
                                        (add (car l_mess) (aux (car l_mess)))^"("^tmp^")";
                        ))        
                );
        in
        aux mess