const pk: Function;
secret sk: Function;
inversekeys (pk,sk);

protocol r5bound(I,R)
{
	role R
	{
		var k1: Nonce;
		var ni: Nonce;
		fresh k2: Nonce;

		recv_!1 (I,R, ni );
		send_!2 (R,I, { ni }sk(R) );
		recv_!3 (I,R, {{{ {k1}pk(R) }sk(I)}sk(I)}sk(I) );
		send_!4 (R,I, {k2}k1 );

		claim_6 (R, Secret, k2);
	}
}


