let transcript_to_real name (mess : string) : string =
let rec aux mess =
let l_mess = decompose mess in
(if(l_mess=[]) then(
if(is_a_var mess) then aux (get_value_of_var name 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 "," (cdr l_mess)
) in
(aux (car l_mess))^"("^tmp^")";
)
in
aux mess