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

protocol carkeyni(I,R)
{
	role I
	{
		const ni: Nonce;

		send_1(I,R, {R,ni}sk(I) );
	}	
	
	role R
	{
		var ni: Nonce;

		read_1(I,R, {R,ni}sk(I) );
		claim_2(R,Nisynch);
	}
}

const Alice,Bob,Eve: Agent;

untrusted Eve;
const nc: Nonce;
compromised sk(Eve);

run carkeyni.I(Agent,Agent);
run carkeyni.R(Agent,Agent);
run carkeyni.I(Agent,Agent);
run carkeyni.R(Agent,Agent);
