open Commit_protocol type var_c = C of principal type var_w = W of principal type var_q = Q of int (* Proxy function for role c *) type result_c = string type msg0 = Commit of (var_q * var_c * var_w * msg1) and msg1 = { hAck : (unit -> msg2)} and msg2 = Reveal of (result_c) val c : principal -> msg0 -> result_c (* Proxy function for role w *) type result_w = string type msg4 = { hCommit : (var_c * var_w -> msg5)} and msg5 = Ack of (msg6) and msg6 = { hReveal : (var_q -> result_w)} val w : principal -> msg4 -> result_w