cpsa-4.4.1: coq/Examples/Otway_rees.v
(** Protocol: otway-rees (otway_rees.scm:7:1) *)
Require Import Proc.
Import List.ListNotations.
Open Scope list_scope.
Open Scope string.
(** Role: init (otway_rees.scm:9:3) *)
Definition init: proc :=
mkProc
[(0, Chan); (1, Name); (2, Name); (3, Skey)]
[
(* Send (otway_rees.scm:12:6) *)
Bind (4, Text) (Frsh_);
Bind (5, Mesg) (Pair_ 2 4);
Bind (6, Mesg) (Pair_ 1 5);
Send 0 6;
(* Recv (otway_rees.scm:13:6) *)
Bind (7, Mesg) (Recv_ 0);
Bind (8, Mesg) (Decr_ 7 3);
Bind (9, Text) (Frst_ 8);
Bind (10, Mesg) (Scnd_ 8);
Same 9 4;
Bind (11, Name) (Frst_ 10);
Bind (12, Mesg) (Scnd_ 10);
Same 11 1;
Bind (13, Name) (Frst_ 12);
Bind (14, Skey) (Scnd_ 12);
Same 13 2;
Return [14]
].
(** Role: resp (otway_rees.scm:20:3) *)
Definition resp: proc :=
mkProc
[(0, Chan); (1, Chan); (2, Name); (3, Skey)]
[
(* Recv (otway_rees.scm:24:6) *)
Bind (4, Mesg) (Recv_ 0);
Bind (5, Name) (Frst_ 4);
Bind (6, Mesg) (Scnd_ 4);
Bind (7, Name) (Frst_ 6);
Bind (8, Text) (Scnd_ 6);
Same 7 2;
(* Send (otway_rees.scm:25:6) *)
Bind (9, Text) (Frsh_);
Bind (10, Mesg) (Pair_ 8 9);
Bind (11, Mesg) (Pair_ 2 10);
Bind (12, Mesg) (Pair_ 5 11);
Send 1 12;
(* Recv (otway_rees.scm:26:6) *)
Bind (13, Mesg) (Recv_ 1);
Bind (14, Mesg) (Frst_ 13);
Bind (15, Mesg) (Scnd_ 13);
Bind (16, Mesg) (Decr_ 15 3);
Bind (17, Text) (Frst_ 16);
Bind (18, Mesg) (Scnd_ 16);
Same 17 9;
Bind (19, Name) (Frst_ 18);
Bind (20, Mesg) (Scnd_ 18);
Same 19 5;
Bind (21, Name) (Frst_ 20);
Bind (22, Skey) (Scnd_ 20);
Same 21 2;
(* Send (otway_rees.scm:27:6) *)
Send 0 14;
Return [5; 22]
].
(** Role: serv (otway_rees.scm:34:3) *)
Definition serv: proc :=
mkProc
[(0, Chan); (1, Name); (2, Name); (3, Skey); (4, Skey)]
[
(* Recv (otway_rees.scm:37:6) *)
Bind (5, Mesg) (Recv_ 0);
Bind (6, Name) (Frst_ 5);
Bind (7, Mesg) (Scnd_ 5);
Same 6 1;
Bind (8, Name) (Frst_ 7);
Bind (9, Mesg) (Scnd_ 7);
Same 8 2;
Bind (10, Text) (Frst_ 9);
Bind (11, Text) (Scnd_ 9);
(* Send (otway_rees.scm:38:6) *)
Bind (12, Skey) (Frsh_);
Bind (13, Mesg) (Pair_ 2 12);
Bind (14, Mesg) (Pair_ 1 13);
Bind (15, Mesg) (Pair_ 10 14);
Bind (16, Mesg) (Encr_ 15 3);
Bind (17, Mesg) (Pair_ 11 14);
Bind (18, Mesg) (Encr_ 17 4);
Bind (19, Mesg) (Pair_ 16 18);
Send 0 19;
Return [12]
].