@@ -49,6 +49,8 @@ Definition alice_idx : nat := 0.
4949Definition bob_idx : nat := 1.
5050Definition charlie_idx : nat := 2.
5151
52+ Coercion nat_to_party_id : nat >-> party_id.
53+
5254(* Make dtype and data explicit for sproc type annotations *)
5355Arguments sproc dtype data party {_} {_}.
5456
@@ -103,19 +105,19 @@ Local Notation E := enc_pub_key.
103105Definition pbob (dk : priv_keyT)(v2 : msgT)(rb1 rb2 : randT)
104106 : sproc dsdp_dtype data bob_idx :=
105107 \pi{ Init (#dk, &v2) ;
106- Send<alice_idx> $(E bob v2 rb1);
108+ Send<alice_idx> $(E bob_idx v2 rb1);
107109 Recv<alice_idx> #dk d2 =>
108110 Recv<alice_idx> a3 =>
109- Send<charlie_idx> $(a3 *h (E charlie d2 rb2)) ;
111+ Send<charlie_idx> $(a3 *h (E charlie_idx d2 rb2)) ;
110112 Finish }.
111113
112114(* Charlie's protocol *)
113115Definition pcharlie (dk : priv_keyT)(v3 : msgT)(rc1 rc2 : randT)
114116 : sproc dsdp_dtype data charlie_idx :=
115117 \pi{ Init (#dk, &v3) ;
116- Send<alice_idx> $(E charlie v3 rc1) ;
118+ Send<alice_idx> $(E charlie_idx v3 rc1) ;
117119 Recv<bob_idx> #dk d3 =>
118- Send<alice_idx> $(E alice d3 rc2) ;
120+ Send<alice_idx> $(E alice_idx d3 rc2) ;
119121 Finish }.
120122
121123(* Alice's protocol *)
@@ -124,8 +126,8 @@ Definition palice (dk : priv_keyT)(v1 u1 u2 u3 r2 r3: msgT)(ra1 ra2 : randT)
124126 \pi{ Init (#dk, &v1, &u1, &u2, &u3, &r2, &r3) ;
125127 Recv<bob_idx> c2 =>
126128 Recv<charlie_idx> c3 =>
127- Send<bob_idx> $(c2 ^h u2 *h (E bob r2 ra1)) ;
128- Send<bob_idx> $(c3 ^h u3 *h (E charlie r3 ra2)) ;
129+ Send<bob_idx> $(c2 ^h u2 *h (E bob_idx r2 ra1)) ;
130+ Send<bob_idx> $(c3 ^h u3 *h (E charlie_idx r3 ra2)) ;
129131 Recv<charlie_idx> #dk g =>
130132 Ret &(g - r2 - r3 + u1 * v1) }.
131133
@@ -142,6 +144,9 @@ Variable pn : party_id -> nat.
142144Hypothesis pn_alice : pn alice = alice_idx.
143145Hypothesis pn_bob : pn bob = bob_idx.
144146Hypothesis pn_charlie : pn charlie = charlie_idx.
147+ Hypothesis np_alice : nat_to_party_id alice_idx = alice.
148+ Hypothesis np_bob : nat_to_party_id bob_idx = bob.
149+ Hypothesis np_charlie : nat_to_party_id charlie_idx = charlie.
145150
146151(* Import original programs from dsdp_program *)
147152Let palice_orig := @dsdp_program.palice AHE bob charlie pn ek.
@@ -154,17 +159,26 @@ Let pcharlie_orig := @dsdp_program.pcharlie AHE alice bob charlie pn ek.
154159Lemma alice_cross_eq dk' v1' u1' u2' u3' r2' r3' ra1' ra2' :
155160 erase (palice dk' v1' u1' u2' u3' r2' r3' ra1' ra2') =
156161 erase (palice_orig dk' v1' u1' u2' u3' r2' r3' ra1' ra2').
157- Proof . by rewrite /palice_orig /dsdp_program.palice pn_bob pn_charlie. Qed .
162+ Proof .
163+ by rewrite /palice /palice_orig /dsdp_program.palice pn_bob pn_charlie
164+ /enc_pub_key /dsdp_program.enc_pk np_bob np_charlie.
165+ Qed .
158166
159167Lemma bob_cross_eq dk' v2' rb1' rb2' :
160168 erase (pbob dk' v2' rb1' rb2') =
161169 erase (pbob_orig dk' v2' rb1' rb2').
162- Proof . by rewrite /pbob_orig /dsdp_program.pbob pn_alice pn_charlie. Qed .
170+ Proof .
171+ by rewrite /pbob /pbob_orig /dsdp_program.pbob pn_alice pn_charlie
172+ /enc_pub_key /dsdp_program.enc_pk np_bob np_charlie.
173+ Qed .
163174
164175Lemma charlie_cross_eq dk' v3' rc1' rc2' :
165176 erase (pcharlie dk' v3' rc1' rc2') =
166177 erase (pcharlie_orig dk' v3' rc1' rc2').
167- Proof . by rewrite /pcharlie_orig /dsdp_program.pcharlie pn_alice pn_bob. Qed .
178+ Proof .
179+ by rewrite /pcharlie /pcharlie_orig /dsdp_program.pcharlie pn_alice pn_bob
180+ /enc_pub_key /dsdp_program.enc_pk np_alice np_charlie.
181+ Qed .
168182
169183(***************************************************************************** *)
170184(** * Session Type Duality Verification *)
0 commit comments