(* This file is generated automatically by protocol transformer without using types from c:/proverif/Done_3/A_Six_Pas_Pairing_Based_AKC_Protocol/six_pass.pl *)

fun o/0.
fun s/1.
fun p/1.
fun exp/10.
fun mult/10.
fun e/2.
fun a/0.
fun b/0.
fun c/0.
fun d/0.
fun point/0.
fun secret/0.
fun na/1.
fun nb/1.
fun nc/1.
fun sk/1.
fun pk/1.
fun enc/2.
fun sign/2.
fun cert/2.

pred nexp/3 elimVar,decompData.
pred nrexp/3 elimVar,decompData.
pred nmult/3 elimVar,decompData.
pred nrmult/3 elimVar,decompData.
pred npair/3 elimVar,decompData.
pred incr/2 elimVar,decompData.
pred decr/2 elimVar,decompData.
pred add/3 elimVar,decompData.
pred i/1 elimVar,decompData.
nounif i:x.
pred i0/1 elimVar,decompData.
nounif i0:x.

equation e(x,y) = e(y,x).

query i0:secret.

reduc

(***** Phase rules: *****)

(***** Intruder rules: *****)
i0:o;
i0:x -> i0:s(x);
i0:x -> i0:p(x);
i0:exp(x, o, o, o, o, o, o, o, o, o)  ->  i0:x;
i0:x  ->  i0:exp(x, o, o, o, o, o, o, o, o, o);
i0:(na(a), y1, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, y1, x2, x3, x4, x5, x6, x7, x8, x9);
i0:(na(b), y2, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, x1, y2, x3, x4, x5, x6, x7, x8, x9);
i0:(na(c), y3, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, x1, x2, y3, x4, x5, x6, x7, x8, x9);
i0:(nb(a), y4, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, x1, x2, x3, y4, x5, x6, x7, x8, x9);
i0:(nb(b), y5, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, x1, x2, x3, x4, y5, x6, x7, x8, x9);
i0:(nb(c), y6, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, x1, x2, x3, x4, x5, y6, x7, x8, x9);
i0:(nc(a), y7, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, x1, x2, x3, x4, x5, x6, y7, x8, x9);
i0:(nc(b), y8, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, x1, x2, x3, x4, x5, x6, x7, y8, x9);
i0:(nc(c), y9, exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:exp(x, x1, x2, x3, x4, x5, x6, x7, x8, y9);

i0:mult(x, o, o, o, o, o, o, o, o, o)  ->  i0:x;
i0:x  ->  i0:mult(x, o, o, o, o, o, o, o, o, o);
i0:(na(a), y1, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, y1, x2, x3, x4, x5, x6, x7, x8, x9);
i0:(na(b), y2, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, x1, y2, x3, x4, x5, x6, x7, x8, x9);
i0:(na(c), y3, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, x1, x2, y3, x4, x5, x6, x7, x8, x9);
i0:(nb(a), y4, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, x1, x2, x3, y4, x5, x6, x7, x8, x9);
i0:(nb(b), y5, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, x1, x2, x3, x4, y5, x6, x7, x8, x9);
i0:(nb(c), y6, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, x1, x2, x3, x4, x5, y6, x7, x8, x9);
i0:(nc(a), y7, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, x1, x2, x3, x4, x5, x6, y7, x8, x9);
i0:(nc(b), y8, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, x1, x2, x3, x4, x5, x6, x7, y8, x9);
i0:(nc(c), y9, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9))  ->  i0:mult(x, x1, x2, x3, x4, x5, x6, x7, x8, y9);

add: x1,y1,z1 & add: x2,y2,z2 & add: x3,y3,z3 & add: x4,y4,z4 & add: x5,y5,z5 & add: x6,y6,z6 & add: x7,y7,z7 & add: x8,y8,z8 & add: x9,y9,z9 &
i0:(mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), mult(y, y1, y2, y3, y4, y5, y6, y7, y8, y9))  ->  i0:exp(e(x,y), z1, z2, z3, z4, z5, z6, z7, z8, z9);

(***** Normalisation rules: *****)

nexp: x, na(a), exp(x, s(o), o, o, o, o, o, o, o, o); 
nexp: exp(x, p(o), o, o, o, o, o, o, o, o), na(a), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(a), exp(x, s(x1), x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: exp(x, p(x1), x2, x3, x4, x5, x6, x7, x8, x9), na(a), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: x, na(b), exp(x, o, s(o), o, o, o, o, o, o, o); 
nexp: exp(x, o, p(o), o, o, o, o, o, o, o), na(b), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(b), exp(x, x1, s(x2), x3, x4, x5, x6, x7, x8, x9); 
nexp: exp(x, x1, p(x2), x3, x4, x5, x6, x7, x8, x9), na(b), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: x, na(c), exp(x, o, o, s(o), o, o, o, o, o, o); 
nexp: exp(x, o, o, p(o), o, o, o, o, o, o), na(c), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(c), exp(x, x1, x2, s(x3), x4, x5, x6, x7, x8, x9); 
nexp: exp(x, x1, x2, p(x3), x4, x5, x6, x7, x8, x9), na(c), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: x, nb(a), exp(x, o, o, o, s(o), o, o, o, o, o); 
nexp: exp(x, o, o, o, p(o), o, o, o, o, o), nb(a), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(a), exp(x, x1, x2, x3, s(x4), x5, x6, x7, x8, x9); 
nexp: exp(x, x1, x2, x3, p(x4), x5, x6, x7, x8, x9), nb(a), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: x, nb(b), exp(x, o, o, o, o, s(o), o, o, o, o); 
nexp: exp(x, o, o, o, o, p(o), o, o, o, o), nb(b), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(b), exp(x, x1, x2, x3, x4, s(x5), x6, x7, x8, x9); 
nexp: exp(x, x1, x2, x3, x4, p(x5), x6, x7, x8, x9), nb(b), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: x, nb(c), exp(x, o, o, o, o, o, s(o), o, o, o); 
nexp: exp(x, o, o, o, o, o, p(o), o, o, o), nb(c), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(c), exp(x, x1, x2, x3, x4, x5, s(x6), x7, x8, x9); 
nexp: exp(x, x1, x2, x3, x4, x5, p(x6), x7, x8, x9), nb(c), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: x, nc(a), exp(x, o, o, o, o, o, o, s(o), o, o); 
nexp: exp(x, o, o, o, o, o, o, p(o), o, o), nc(a), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(a), exp(x, x1, x2, x3, x4, x5, x6, s(x7), x8, x9); 
nexp: exp(x, x1, x2, x3, x4, x5, x6, p(x7), x8, x9), nc(a), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: x, nc(b), exp(x, o, o, o, o, o, o, o, s(o), o); 
nexp: exp(x, o, o, o, o, o, o, o, p(o), o), nc(b), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(b), exp(x, x1, x2, x3, x4, x5, x6, x7, s(x8), x9); 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, p(x8), x9), nc(b), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nexp: x, nc(c), exp(x, o, o, o, o, o, o, o, o, s(o)); 
nexp: exp(x, o, o, o, o, o, o, o, o, p(o)), nc(c), x; 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(c), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, s(x9)); 
nexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, p(x9)), nc(c), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 

nrexp: x, na(a), exp(x, p(o), o, o, o, o, o, o, o, o); 
nrexp: exp(x, s(o), o, o, o, o, o, o, o, o), na(a), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(a), exp(x, p(x1), x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: exp(x, s(x1), x2, x3, x4, x5, x6, x7, x8, x9), na(a), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: x, na(b), exp(x, o, p(o), o, o, o, o, o, o, o); 
nrexp: exp(x, o, s(o), o, o, o, o, o, o, o), na(b), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(b), exp(x, x1, p(x2), x3, x4, x5, x6, x7, x8, x9); 
nrexp: exp(x, x1, s(x2), x3, x4, x5, x6, x7, x8, x9), na(b), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: x, na(c), exp(x, o, o, p(o), o, o, o, o, o, o); 
nrexp: exp(x, o, o, s(o), o, o, o, o, o, o), na(c), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(c), exp(x, x1, x2, p(x3), x4, x5, x6, x7, x8, x9); 
nrexp: exp(x, x1, x2, s(x3), x4, x5, x6, x7, x8, x9), na(c), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: x, nb(a), exp(x, o, o, o, p(o), o, o, o, o, o); 
nrexp: exp(x, o, o, o, s(o), o, o, o, o, o), nb(a), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(a), exp(x, x1, x2, x3, p(x4), x5, x6, x7, x8, x9); 
nrexp: exp(x, x1, x2, x3, s(x4), x5, x6, x7, x8, x9), nb(a), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: x, nb(b), exp(x, o, o, o, o, p(o), o, o, o, o); 
nrexp: exp(x, o, o, o, o, s(o), o, o, o, o), nb(b), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(b), exp(x, x1, x2, x3, x4, p(x5), x6, x7, x8, x9); 
nrexp: exp(x, x1, x2, x3, x4, s(x5), x6, x7, x8, x9), nb(b), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: x, nb(c), exp(x, o, o, o, o, o, p(o), o, o, o); 
nrexp: exp(x, o, o, o, o, o, s(o), o, o, o), nb(c), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(c), exp(x, x1, x2, x3, x4, x5, p(x6), x7, x8, x9); 
nrexp: exp(x, x1, x2, x3, x4, x5, s(x6), x7, x8, x9), nb(c), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: x, nc(a), exp(x, o, o, o, o, o, o, p(o), o, o); 
nrexp: exp(x, o, o, o, o, o, o, s(o), o, o), nc(a), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(a), exp(x, x1, x2, x3, x4, x5, x6, p(x7), x8, x9); 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, s(x7), x8, x9), nc(a), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: x, nc(b), exp(x, o, o, o, o, o, o, o, p(o), o); 
nrexp: exp(x, o, o, o, o, o, o, o, s(o), o), nc(b), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(b), exp(x, x1, x2, x3, x4, x5, x6, x7, p(x8), x9); 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, s(x8), x9), nc(b), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrexp: x, nc(c), exp(x, o, o, o, o, o, o, o, o, p(o)); 
nrexp: exp(x, o, o, o, o, o, o, o, o, s(o)), nc(c), x; 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(c), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, p(x9)); 
nrexp: exp(x, x1, x2, x3, x4, x5, x6, x7, x8, s(x9)), nc(c), exp(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 

nmult: x, na(a), mult(x, s(o), o, o, o, o, o, o, o, o); 
nmult: mult(x, p(o), o, o, o, o, o, o, o, o), na(a), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(a), mult(x, s(x1), x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: mult(x, p(x1), x2, x3, x4, x5, x6, x7, x8, x9), na(a), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: x, na(b), mult(x, o, s(o), o, o, o, o, o, o, o); 
nmult: mult(x, o, p(o), o, o, o, o, o, o, o), na(b), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(b), mult(x, x1, s(x2), x3, x4, x5, x6, x7, x8, x9); 
nmult: mult(x, x1, p(x2), x3, x4, x5, x6, x7, x8, x9), na(b), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: x, na(c), mult(x, o, o, s(o), o, o, o, o, o, o); 
nmult: mult(x, o, o, p(o), o, o, o, o, o, o), na(c), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(c), mult(x, x1, x2, s(x3), x4, x5, x6, x7, x8, x9); 
nmult: mult(x, x1, x2, p(x3), x4, x5, x6, x7, x8, x9), na(c), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: x, nb(a), mult(x, o, o, o, s(o), o, o, o, o, o); 
nmult: mult(x, o, o, o, p(o), o, o, o, o, o), nb(a), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(a), mult(x, x1, x2, x3, s(x4), x5, x6, x7, x8, x9); 
nmult: mult(x, x1, x2, x3, p(x4), x5, x6, x7, x8, x9), nb(a), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: x, nb(b), mult(x, o, o, o, o, s(o), o, o, o, o); 
nmult: mult(x, o, o, o, o, p(o), o, o, o, o), nb(b), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(b), mult(x, x1, x2, x3, x4, s(x5), x6, x7, x8, x9); 
nmult: mult(x, x1, x2, x3, x4, p(x5), x6, x7, x8, x9), nb(b), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: x, nb(c), mult(x, o, o, o, o, o, s(o), o, o, o); 
nmult: mult(x, o, o, o, o, o, p(o), o, o, o), nb(c), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(c), mult(x, x1, x2, x3, x4, x5, s(x6), x7, x8, x9); 
nmult: mult(x, x1, x2, x3, x4, x5, p(x6), x7, x8, x9), nb(c), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: x, nc(a), mult(x, o, o, o, o, o, o, s(o), o, o); 
nmult: mult(x, o, o, o, o, o, o, p(o), o, o), nc(a), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(a), mult(x, x1, x2, x3, x4, x5, x6, s(x7), x8, x9); 
nmult: mult(x, x1, x2, x3, x4, x5, x6, p(x7), x8, x9), nc(a), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: x, nc(b), mult(x, o, o, o, o, o, o, o, s(o), o); 
nmult: mult(x, o, o, o, o, o, o, o, p(o), o), nc(b), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(b), mult(x, x1, x2, x3, x4, x5, x6, x7, s(x8), x9); 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, p(x8), x9), nc(b), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nmult: x, nc(c), mult(x, o, o, o, o, o, o, o, o, s(o)); 
nmult: mult(x, o, o, o, o, o, o, o, o, p(o)), nc(c), x; 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(c), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, s(x9)); 
nmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, p(x9)), nc(c), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 

nrmult: x, na(a), mult(x, p(o), o, o, o, o, o, o, o, o); 
nrmult: mult(x, s(o), o, o, o, o, o, o, o, o), na(a), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(a), mult(x, p(x1), x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: mult(x, s(x1), x2, x3, x4, x5, x6, x7, x8, x9), na(a), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: x, na(b), mult(x, o, p(o), o, o, o, o, o, o, o); 
nrmult: mult(x, o, s(o), o, o, o, o, o, o, o), na(b), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(b), mult(x, x1, p(x2), x3, x4, x5, x6, x7, x8, x9); 
nrmult: mult(x, x1, s(x2), x3, x4, x5, x6, x7, x8, x9), na(b), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: x, na(c), mult(x, o, o, p(o), o, o, o, o, o, o); 
nrmult: mult(x, o, o, s(o), o, o, o, o, o, o), na(c), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), na(c), mult(x, x1, x2, p(x3), x4, x5, x6, x7, x8, x9); 
nrmult: mult(x, x1, x2, s(x3), x4, x5, x6, x7, x8, x9), na(c), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: x, nb(a), mult(x, o, o, o, p(o), o, o, o, o, o); 
nrmult: mult(x, o, o, o, s(o), o, o, o, o, o), nb(a), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(a), mult(x, x1, x2, x3, p(x4), x5, x6, x7, x8, x9); 
nrmult: mult(x, x1, x2, x3, s(x4), x5, x6, x7, x8, x9), nb(a), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: x, nb(b), mult(x, o, o, o, o, p(o), o, o, o, o); 
nrmult: mult(x, o, o, o, o, s(o), o, o, o, o), nb(b), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(b), mult(x, x1, x2, x3, x4, p(x5), x6, x7, x8, x9); 
nrmult: mult(x, x1, x2, x3, x4, s(x5), x6, x7, x8, x9), nb(b), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: x, nb(c), mult(x, o, o, o, o, o, p(o), o, o, o); 
nrmult: mult(x, o, o, o, o, o, s(o), o, o, o), nb(c), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nb(c), mult(x, x1, x2, x3, x4, x5, p(x6), x7, x8, x9); 
nrmult: mult(x, x1, x2, x3, x4, x5, s(x6), x7, x8, x9), nb(c), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: x, nc(a), mult(x, o, o, o, o, o, o, p(o), o, o); 
nrmult: mult(x, o, o, o, o, o, o, s(o), o, o), nc(a), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(a), mult(x, x1, x2, x3, x4, x5, x6, p(x7), x8, x9); 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, s(x7), x8, x9), nc(a), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: x, nc(b), mult(x, o, o, o, o, o, o, o, p(o), o); 
nrmult: mult(x, o, o, o, o, o, o, o, s(o), o), nc(b), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(b), mult(x, x1, x2, x3, x4, x5, x6, x7, p(x8), x9); 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, s(x8), x9), nc(b), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 
nrmult: x, nc(c), mult(x, o, o, o, o, o, o, o, o, p(o)); 
nrmult: mult(x, o, o, o, o, o, o, o, o, s(o)), nc(c), x; 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), nc(c), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, p(x9)); 
nrmult: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, s(x9)), nc(c), mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9); 

incr: o, s(o);
incr: s(x), s(s(x));
incr: p(x), x;

decr: o, p(o);
decr: p(x), p(p(x));
decr: s(x), x;

add: x, o, x;

add: x, y, z & incr: z, w  -> add: x, s(y), w;
add: x, y, z & decr: z, w  -> add: x, p(y), w;

npair: x, y, e(x,y); 
npair: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9),  y, exp(e(x,y), x1, x2, x3, x4, x5, x6, x7, x8, x9); 
npair:  y, mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), exp(e(x,y), x1, x2, x3, x4, x5, x6, x7, x8, x9); 

add: x1,y1,z1 & add: x2,y2,z2 & add: x3,y3,z3 & add: x4,y4,z4 & add: x5,y5,z5 & add: x6,y6,z6 & add: x7,y7,z7 & add: x8,y8,z8 & add: x9,y9,z9 -> 
npair: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), mult(y, y1, y2, y3, y4, y5, y6, y7, y8, y9), exp(e(x,y), z1, z2, z3, z4, z5, z6, z7, z8, z9); 

add: x1,y1,o & add: x2,y2,o & add: x3,y3,o & add: x4,y4,o & add: x5,y5,o & add: x6,y6,o & add: x7,y7,o & add: x8,y8,o & add: x9,y9,o -> 
npair: mult(x, x1, x2, x3, x4, x5, x6, x7, x8, x9), mult(y, y1, y2, y3, y4, y5, y6, y7, y8, y9), e(x,y); 

(***** User rules: *****)

  (*    rule:  i0:cert(X, Y)->i0: (X, Y) *)
  (* aux.var: *)
  (*  result:  i0:cert(X, Y)->i0: (X, Y) *)

i0:cert(X, Y)  ->  i0:(X, Y);

  (*    rule:  i0: (X, Y)->i0:sign(X, Y) *)
  (* aux.var: *)
  (*  result:  i0: (X, Y)->i0:sign(X, Y) *)

i0:(X, Y)  ->  i0:sign(X, Y);

  (*    rule:  i0:X->i0:pk(X) *)
  (* aux.var: *)
  (*  result:  i0:X->i0:pk(X) *)

i0:X  ->  i0:pk(X);

  (*    rule:  i0: (pk(X), sign(X, Y))->i0:Y *)
  (* aux.var: *)
  (*  result:  i0: (pk(X), sign(X, Y))->i0:Y *)

i0:(pk(X), sign(X, Y))  ->  i0:Y;

  (*    rule:  i0: (X, Y)->i0:enc(X, Y) *)
  (* aux.var: *)
  (*  result:  i0: (X, Y)->i0:enc(X, Y) *)

i0:(X, Y)  ->  i0:enc(X, Y);

  (*    rule:  i0:point *)
  (* aux.var: *)
  (*  result:  i0:point *)

i0:point;

  (*    rule:  i0: (X, enc(X, Y))->i0:Y *)
  (* aux.var: *)
  (*  result:  i0: (X, enc(X, Y))->i0:Y *)

i0:(X, enc(X, Y))  ->  i0:Y;

  (*    rule:  i0:X->i0:cert(d, X) *)
  (* aux.var: *)
  (*  result:  i0:X->i0:cert(d, X) *)

i0:X  ->  i0:cert(d, X);

  (*    rule:  i0: (point*na(a), cert(a, pk(sk(a)))) *)
  (* aux.var: *)
  (*  result:  i0: (mult(point, s(o), o, o, o, o, o, o, o, o), cert(a, pk(sk(a)))) *)

i0:(mult(point, s(o), o, o, o, o, o, o, o, o), cert(a, pk(sk(a))));

  (*    rule:  i0: (point*na(b), cert(b, pk(sk(b)))) *)
  (* aux.var: *)
  (*  result:  i0: (mult(point, o, s(o), o, o, o, o, o, o, o), cert(b, pk(sk(b)))) *)

i0:(mult(point, o, s(o), o, o, o, o, o, o, o), cert(b, pk(sk(b))));

  (*    rule:  i0: (point*na(c), cert(c, pk(sk(c)))) *)
  (* aux.var: *)
  (*  result:  i0: (mult(point, o, o, s(o), o, o, o, o, o, o), cert(c, pk(sk(c)))) *)

i0:(mult(point, o, o, s(o), o, o, o, o, o, o), cert(c, pk(sk(c))));

  (*    rule:  i0: (X, cert(b, Y), Z, cert(c, pk(A1)), enc(e_(X, Z)^na(a), sign(A1, (a, b, point*na(a), X, Z))))->i0: (Z, cert(c, pk(A1)), enc(e_(X, Z)^na(a), sign(A1, (a, b, point*na(a), X, Z))), enc(e_(X, Z)^na(a), sign(sk(a), (b, c, point*na(a), X, Z)))) *)
  (* aux.var:  x1 = e_(X, Z)^na(a), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(b, Y), Z, cert(c, pk(A1)), enc(x1, sign(A1, (a, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))))->i0: (Z, cert(c, pk(A1)), enc(x1, sign(A1, (a, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(a), (b, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z)))) *)

nexp:x2,na(a),x1 & npair:X,Z,x2 &
i0:(X, cert(b, Y), Z, cert(c, pk(A1)), enc(x1, sign(A1, (a, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))))  ->  i0:(Z, cert(c, pk(A1)), enc(x1, sign(A1, (a, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(a), (b, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))));

  (*    rule:  i0: (X, cert(c, Y), Z, cert(b, pk(A1)), enc(e_(X, Z)^na(a), sign(A1, (a, c, point*na(a), X, Z))))->i0: (Z, cert(b, pk(A1)), enc(e_(X, Z)^na(a), sign(A1, (a, c, point*na(a), X, Z))), enc(e_(X, Z)^na(a), sign(sk(a), (c, b, point*na(a), X, Z)))) *)
  (* aux.var:  x1 = e_(X, Z)^na(a), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(c, Y), Z, cert(b, pk(A1)), enc(x1, sign(A1, (a, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))))->i0: (Z, cert(b, pk(A1)), enc(x1, sign(A1, (a, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(a), (c, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z)))) *)

nexp:x2,na(a),x1 & npair:X,Z,x2 &
i0:(X, cert(c, Y), Z, cert(b, pk(A1)), enc(x1, sign(A1, (a, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))))  ->  i0:(Z, cert(b, pk(A1)), enc(x1, sign(A1, (a, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(a), (c, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Z))));

  (*    rule:  i0: (X, cert(a, Y), Z, cert(c, pk(A1)), enc(e_(X, Z)^na(b), sign(A1, (b, a, point*na(b), X, Z))))->i0: (Z, cert(c, pk(A1)), enc(e_(X, Z)^na(b), sign(A1, (b, a, point*na(b), X, Z))), enc(e_(X, Z)^na(b), sign(sk(b), (a, c, point*na(b), X, Z)))) *)
  (* aux.var:  x1 = e_(X, Z)^na(b), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(a, Y), Z, cert(c, pk(A1)), enc(x1, sign(A1, (b, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))))->i0: (Z, cert(c, pk(A1)), enc(x1, sign(A1, (b, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(b), (a, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z)))) *)

nexp:x2,na(b),x1 & npair:X,Z,x2 &
i0:(X, cert(a, Y), Z, cert(c, pk(A1)), enc(x1, sign(A1, (b, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))))  ->  i0:(Z, cert(c, pk(A1)), enc(x1, sign(A1, (b, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(b), (a, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))));

  (*    rule:  i0: (X, cert(c, Y), Z, cert(a, pk(A1)), enc(e_(X, Z)^na(b), sign(A1, (b, c, point*na(b), X, Z))))->i0: (Z, cert(a, pk(A1)), enc(e_(X, Z)^na(b), sign(A1, (b, c, point*na(b), X, Z))), enc(e_(X, Z)^na(b), sign(sk(b), (c, a, point*na(b), X, Z)))) *)
  (* aux.var:  x1 = e_(X, Z)^na(b), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(c, Y), Z, cert(a, pk(A1)), enc(x1, sign(A1, (b, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))))->i0: (Z, cert(a, pk(A1)), enc(x1, sign(A1, (b, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(b), (c, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z)))) *)

nexp:x2,na(b),x1 & npair:X,Z,x2 &
i0:(X, cert(c, Y), Z, cert(a, pk(A1)), enc(x1, sign(A1, (b, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))))  ->  i0:(Z, cert(a, pk(A1)), enc(x1, sign(A1, (b, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(b), (c, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Z))));

  (*    rule:  i0: (X, cert(a, Y), Z, cert(b, pk(A1)), enc(e_(X, Z)^na(c), sign(A1, (c, a, point*na(c), X, Z))))->i0: (Z, cert(b, pk(A1)), enc(e_(X, Z)^na(c), sign(A1, (c, a, point*na(c), X, Z))), enc(e_(X, Z)^na(c), sign(sk(c), (a, b, point*na(c), X, Z)))) *)
  (* aux.var:  x1 = e_(X, Z)^na(c), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(a, Y), Z, cert(b, pk(A1)), enc(x1, sign(A1, (c, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))))->i0: (Z, cert(b, pk(A1)), enc(x1, sign(A1, (c, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(c), (a, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z)))) *)

nexp:x2,na(c),x1 & npair:X,Z,x2 &
i0:(X, cert(a, Y), Z, cert(b, pk(A1)), enc(x1, sign(A1, (c, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))))  ->  i0:(Z, cert(b, pk(A1)), enc(x1, sign(A1, (c, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(c), (a, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))));

  (*    rule:  i0: (X, cert(b, Y), Z, cert(a, pk(A1)), enc(e_(X, Z)^na(c), sign(A1, (c, b, point*na(c), X, Z))))->i0: (Z, cert(a, pk(A1)), enc(e_(X, Z)^na(c), sign(A1, (c, b, point*na(c), X, Z))), enc(e_(X, Z)^na(c), sign(sk(c), (b, a, point*na(c), X, Z)))) *)
  (* aux.var:  x1 = e_(X, Z)^na(c), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(b, Y), Z, cert(a, pk(A1)), enc(x1, sign(A1, (c, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))))->i0: (Z, cert(a, pk(A1)), enc(x1, sign(A1, (c, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(c), (b, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z)))) *)

nexp:x2,na(c),x1 & npair:X,Z,x2 &
i0:(X, cert(b, Y), Z, cert(a, pk(A1)), enc(x1, sign(A1, (c, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))))  ->  i0:(Z, cert(a, pk(A1)), enc(x1, sign(A1, (c, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))), enc(x1, sign(sk(c), (b, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Z))));

  (*    rule:  i0: (enc(e_(X, Y)^na(a), sign(Z, (a, c, point*na(a), X, Y))), X, cert(b, pk(Z)), Y, cert(c, pk(A1)), enc(e_(X, Y)^na(a), sign(A1, (a, b, point*na(a), X, Y))))->i0:enc(e_(X, Y)^na(a), secret) *)
  (* aux.var:  x1 = e_(X, Y)^na(a), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (a, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Y))), X, cert(b, pk(Z)), Y, cert(c, pk(A1)), enc(x1, sign(A1, (a, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Y))))->i0:enc(x1, secret) *)

nexp:x2,na(a),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (a, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Y))), X, cert(b, pk(Z)), Y, cert(c, pk(A1)), enc(x1, sign(A1, (a, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Y))))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^na(a), sign(Z, (a, b, point*na(a), X, Y))), X, cert(c, pk(Z)), Y, cert(b, pk(A1)), enc(e_(X, Y)^na(a), sign(A1, (a, c, point*na(a), X, Y))))->i0:enc(e_(X, Y)^na(a), secret) *)
  (* aux.var:  x1 = e_(X, Y)^na(a), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (a, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Y))), X, cert(c, pk(Z)), Y, cert(b, pk(A1)), enc(x1, sign(A1, (a, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Y))))->i0:enc(x1, secret) *)

nexp:x2,na(a),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (a, b, mult(point, s(o), o, o, o, o, o, o, o, o), X, Y))), X, cert(c, pk(Z)), Y, cert(b, pk(A1)), enc(x1, sign(A1, (a, c, mult(point, s(o), o, o, o, o, o, o, o, o), X, Y))))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^na(b), sign(Z, (b, c, point*na(b), X, Y))), X, cert(a, pk(Z)), Y, cert(c, pk(A1)), enc(e_(X, Y)^na(b), sign(A1, (b, a, point*na(b), X, Y))))->i0:enc(e_(X, Y)^na(b), secret) *)
  (* aux.var:  x1 = e_(X, Y)^na(b), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (b, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Y))), X, cert(a, pk(Z)), Y, cert(c, pk(A1)), enc(x1, sign(A1, (b, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Y))))->i0:enc(x1, secret) *)

nexp:x2,na(b),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (b, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Y))), X, cert(a, pk(Z)), Y, cert(c, pk(A1)), enc(x1, sign(A1, (b, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Y))))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^na(b), sign(Z, (b, a, point*na(b), X, Y))), X, cert(c, pk(Z)), Y, cert(a, pk(A1)), enc(e_(X, Y)^na(b), sign(A1, (b, c, point*na(b), X, Y))))->i0:enc(e_(X, Y)^na(b), secret) *)
  (* aux.var:  x1 = e_(X, Y)^na(b), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (b, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Y))), X, cert(c, pk(Z)), Y, cert(a, pk(A1)), enc(x1, sign(A1, (b, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Y))))->i0:enc(x1, secret) *)

nexp:x2,na(b),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (b, a, mult(point, o, s(o), o, o, o, o, o, o, o), X, Y))), X, cert(c, pk(Z)), Y, cert(a, pk(A1)), enc(x1, sign(A1, (b, c, mult(point, o, s(o), o, o, o, o, o, o, o), X, Y))))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^na(c), sign(Z, (c, b, point*na(c), X, Y))), X, cert(a, pk(Z)), Y, cert(b, pk(A1)), enc(e_(X, Y)^na(c), sign(A1, (c, a, point*na(c), X, Y))))->i0:enc(e_(X, Y)^na(c), secret) *)
  (* aux.var:  x1 = e_(X, Y)^na(c), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (c, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Y))), X, cert(a, pk(Z)), Y, cert(b, pk(A1)), enc(x1, sign(A1, (c, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Y))))->i0:enc(x1, secret) *)

nexp:x2,na(c),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (c, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Y))), X, cert(a, pk(Z)), Y, cert(b, pk(A1)), enc(x1, sign(A1, (c, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Y))))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^na(c), sign(Z, (c, a, point*na(c), X, Y))), X, cert(b, pk(Z)), Y, cert(a, pk(A1)), enc(e_(X, Y)^na(c), sign(A1, (c, b, point*na(c), X, Y))))->i0:enc(e_(X, Y)^na(c), secret) *)
  (* aux.var:  x1 = e_(X, Y)^na(c), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (c, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Y))), X, cert(b, pk(Z)), Y, cert(a, pk(A1)), enc(x1, sign(A1, (c, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Y))))->i0:enc(x1, secret) *)

nexp:x2,na(c),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (c, a, mult(point, o, o, s(o), o, o, o, o, o, o), X, Y))), X, cert(b, pk(Z)), Y, cert(a, pk(A1)), enc(x1, sign(A1, (c, b, mult(point, o, o, s(o), o, o, o, o, o, o), X, Y))))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (X, cert(c, pk(Y)), enc(e_(Z, X)^nb(b), sign(Y, (a, b, Z, point*nb(b), X))), enc(e_(Z, X)^nb(b), sign(A1, (b, c, Z, point*nb(b), X))), Z, cert(a, pk(A1)))->i0:enc(e_(Z, X)^nb(b), secret) *)
  (* aux.var:  x1 = e_(Z, X)^nb(b), x2 = e_(Z, X) *)
  (*  result:  i0: (X, cert(c, pk(Y)), enc(x1, sign(Y, (a, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), Z, cert(a, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nb(b),x1 & npair:Z,X,x2 &
i0:(X, cert(c, pk(Y)), enc(x1, sign(Y, (a, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), Z, cert(a, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (X, cert(b, pk(Y)), enc(e_(Z, X)^nb(c), sign(Y, (a, c, Z, point*nb(c), X))), enc(e_(Z, X)^nb(c), sign(A1, (c, b, Z, point*nb(c), X))), Z, cert(a, pk(A1)))->i0:enc(e_(Z, X)^nb(c), secret) *)
  (* aux.var:  x1 = e_(Z, X)^nb(c), x2 = e_(Z, X) *)
  (*  result:  i0: (X, cert(b, pk(Y)), enc(x1, sign(Y, (a, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), Z, cert(a, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nb(c),x1 & npair:Z,X,x2 &
i0:(X, cert(b, pk(Y)), enc(x1, sign(Y, (a, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), Z, cert(a, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (X, cert(c, pk(Y)), enc(e_(Z, X)^nb(a), sign(Y, (b, a, Z, point*nb(a), X))), enc(e_(Z, X)^nb(a), sign(A1, (a, c, Z, point*nb(a), X))), Z, cert(b, pk(A1)))->i0:enc(e_(Z, X)^nb(a), secret) *)
  (* aux.var:  x1 = e_(Z, X)^nb(a), x2 = e_(Z, X) *)
  (*  result:  i0: (X, cert(c, pk(Y)), enc(x1, sign(Y, (b, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), Z, cert(b, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nb(a),x1 & npair:Z,X,x2 &
i0:(X, cert(c, pk(Y)), enc(x1, sign(Y, (b, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), Z, cert(b, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (X, cert(a, pk(Y)), enc(e_(Z, X)^nb(c), sign(Y, (b, c, Z, point*nb(c), X))), enc(e_(Z, X)^nb(c), sign(A1, (c, a, Z, point*nb(c), X))), Z, cert(b, pk(A1)))->i0:enc(e_(Z, X)^nb(c), secret) *)
  (* aux.var:  x1 = e_(Z, X)^nb(c), x2 = e_(Z, X) *)
  (*  result:  i0: (X, cert(a, pk(Y)), enc(x1, sign(Y, (b, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), Z, cert(b, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nb(c),x1 & npair:Z,X,x2 &
i0:(X, cert(a, pk(Y)), enc(x1, sign(Y, (b, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), Z, cert(b, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (X, cert(b, pk(Y)), enc(e_(Z, X)^nb(a), sign(Y, (c, a, Z, point*nb(a), X))), enc(e_(Z, X)^nb(a), sign(A1, (a, b, Z, point*nb(a), X))), Z, cert(c, pk(A1)))->i0:enc(e_(Z, X)^nb(a), secret) *)
  (* aux.var:  x1 = e_(Z, X)^nb(a), x2 = e_(Z, X) *)
  (*  result:  i0: (X, cert(b, pk(Y)), enc(x1, sign(Y, (c, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), Z, cert(c, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nb(a),x1 & npair:Z,X,x2 &
i0:(X, cert(b, pk(Y)), enc(x1, sign(Y, (c, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), Z, cert(c, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (X, cert(a, pk(Y)), enc(e_(Z, X)^nb(b), sign(Y, (c, b, Z, point*nb(b), X))), enc(e_(Z, X)^nb(b), sign(A1, (b, a, Z, point*nb(b), X))), Z, cert(c, pk(A1)))->i0:enc(e_(Z, X)^nb(b), secret) *)
  (* aux.var:  x1 = e_(Z, X)^nb(b), x2 = e_(Z, X) *)
  (*  result:  i0: (X, cert(a, pk(Y)), enc(x1, sign(Y, (c, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), Z, cert(c, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nb(b),x1 & npair:Z,X,x2 &
i0:(X, cert(a, pk(Y)), enc(x1, sign(Y, (c, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), Z, cert(c, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^nc(c), sign(Z, (b, c, X, Y, point*nc(c)))), enc(e_(X, Y)^nc(c), sign(A1, (a, c, X, Y, point*nc(c)))), X, cert(a, pk(Z)), Y, cert(b, pk(A1)))->i0:enc(e_(X, Y)^nc(c), secret) *)
  (* aux.var:  x1 = e_(X, Y)^nc(c), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (b, c, X, Y, mult(point, o, o, o, o, o, o, o, o, s(o))))), enc(x1, sign(A1, (a, c, X, Y, mult(point, o, o, o, o, o, o, o, o, s(o))))), X, cert(a, pk(Z)), Y, cert(b, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nc(c),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (b, c, X, Y, mult(point, o, o, o, o, o, o, o, o, s(o))))), enc(x1, sign(A1, (a, c, X, Y, mult(point, o, o, o, o, o, o, o, o, s(o))))), X, cert(a, pk(Z)), Y, cert(b, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^nc(b), sign(Z, (c, b, X, Y, point*nc(b)))), enc(e_(X, Y)^nc(b), sign(A1, (a, b, X, Y, point*nc(b)))), X, cert(a, pk(Z)), Y, cert(c, pk(A1)))->i0:enc(e_(X, Y)^nc(b), secret) *)
  (* aux.var:  x1 = e_(X, Y)^nc(b), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (c, b, X, Y, mult(point, o, o, o, o, o, o, o, s(o), o)))), enc(x1, sign(A1, (a, b, X, Y, mult(point, o, o, o, o, o, o, o, s(o), o)))), X, cert(a, pk(Z)), Y, cert(c, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nc(b),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (c, b, X, Y, mult(point, o, o, o, o, o, o, o, s(o), o)))), enc(x1, sign(A1, (a, b, X, Y, mult(point, o, o, o, o, o, o, o, s(o), o)))), X, cert(a, pk(Z)), Y, cert(c, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^nc(c), sign(Z, (a, c, X, Y, point*nc(c)))), enc(e_(X, Y)^nc(c), sign(A1, (b, c, X, Y, point*nc(c)))), X, cert(b, pk(Z)), Y, cert(a, pk(A1)))->i0:enc(e_(X, Y)^nc(c), secret) *)
  (* aux.var:  x1 = e_(X, Y)^nc(c), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (a, c, X, Y, mult(point, o, o, o, o, o, o, o, o, s(o))))), enc(x1, sign(A1, (b, c, X, Y, mult(point, o, o, o, o, o, o, o, o, s(o))))), X, cert(b, pk(Z)), Y, cert(a, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nc(c),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (a, c, X, Y, mult(point, o, o, o, o, o, o, o, o, s(o))))), enc(x1, sign(A1, (b, c, X, Y, mult(point, o, o, o, o, o, o, o, o, s(o))))), X, cert(b, pk(Z)), Y, cert(a, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^nc(a), sign(Z, (c, a, X, Y, point*nc(a)))), enc(e_(X, Y)^nc(a), sign(A1, (b, a, X, Y, point*nc(a)))), X, cert(b, pk(Z)), Y, cert(c, pk(A1)))->i0:enc(e_(X, Y)^nc(a), secret) *)
  (* aux.var:  x1 = e_(X, Y)^nc(a), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (c, a, X, Y, mult(point, o, o, o, o, o, o, s(o), o, o)))), enc(x1, sign(A1, (b, a, X, Y, mult(point, o, o, o, o, o, o, s(o), o, o)))), X, cert(b, pk(Z)), Y, cert(c, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nc(a),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (c, a, X, Y, mult(point, o, o, o, o, o, o, s(o), o, o)))), enc(x1, sign(A1, (b, a, X, Y, mult(point, o, o, o, o, o, o, s(o), o, o)))), X, cert(b, pk(Z)), Y, cert(c, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^nc(b), sign(Z, (a, b, X, Y, point*nc(b)))), enc(e_(X, Y)^nc(b), sign(A1, (c, b, X, Y, point*nc(b)))), X, cert(c, pk(Z)), Y, cert(a, pk(A1)))->i0:enc(e_(X, Y)^nc(b), secret) *)
  (* aux.var:  x1 = e_(X, Y)^nc(b), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (a, b, X, Y, mult(point, o, o, o, o, o, o, o, s(o), o)))), enc(x1, sign(A1, (c, b, X, Y, mult(point, o, o, o, o, o, o, o, s(o), o)))), X, cert(c, pk(Z)), Y, cert(a, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nc(b),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (a, b, X, Y, mult(point, o, o, o, o, o, o, o, s(o), o)))), enc(x1, sign(A1, (c, b, X, Y, mult(point, o, o, o, o, o, o, o, s(o), o)))), X, cert(c, pk(Z)), Y, cert(a, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (enc(e_(X, Y)^nc(a), sign(Z, (b, a, X, Y, point*nc(a)))), enc(e_(X, Y)^nc(a), sign(A1, (c, a, X, Y, point*nc(a)))), X, cert(c, pk(Z)), Y, cert(b, pk(A1)))->i0:enc(e_(X, Y)^nc(a), secret) *)
  (* aux.var:  x1 = e_(X, Y)^nc(a), x2 = e_(X, Y) *)
  (*  result:  i0: (enc(x1, sign(Z, (b, a, X, Y, mult(point, o, o, o, o, o, o, s(o), o, o)))), enc(x1, sign(A1, (c, a, X, Y, mult(point, o, o, o, o, o, o, s(o), o, o)))), X, cert(c, pk(Z)), Y, cert(b, pk(A1)))->i0:enc(x1, secret) *)

nexp:x2,nc(a),x1 & npair:X,Y,x2 &
i0:(enc(x1, sign(Z, (b, a, X, Y, mult(point, o, o, o, o, o, o, s(o), o, o)))), enc(x1, sign(A1, (c, a, X, Y, mult(point, o, o, o, o, o, o, s(o), o, o)))), X, cert(c, pk(Z)), Y, cert(b, pk(A1)))  ->  i0:enc(x1, secret);

  (*    rule:  i0: (X, cert(a, Y))->i0: (X, cert(a, Y), point*nb(b), cert(b, pk(sk(b)))) *)
  (* aux.var: *)
  (*  result:  i0: (X, cert(a, Y))->i0: (X, cert(a, Y), mult(point, o, o, o, o, s(o), o, o, o, o), cert(b, pk(sk(b)))) *)

i0:(X, cert(a, Y))  ->  i0:(X, cert(a, Y), mult(point, o, o, o, o, s(o), o, o, o, o), cert(b, pk(sk(b))));

  (*    rule:  i0: (X, cert(a, Y))->i0: (X, cert(a, Y), point*nb(c), cert(c, pk(sk(c)))) *)
  (* aux.var: *)
  (*  result:  i0: (X, cert(a, Y))->i0: (X, cert(a, Y), mult(point, o, o, o, o, o, s(o), o, o, o), cert(c, pk(sk(c)))) *)

i0:(X, cert(a, Y))  ->  i0:(X, cert(a, Y), mult(point, o, o, o, o, o, s(o), o, o, o), cert(c, pk(sk(c))));

  (*    rule:  i0: (X, cert(b, Y))->i0: (X, cert(b, Y), point*nb(a), cert(a, pk(sk(a)))) *)
  (* aux.var: *)
  (*  result:  i0: (X, cert(b, Y))->i0: (X, cert(b, Y), mult(point, o, o, o, s(o), o, o, o, o, o), cert(a, pk(sk(a)))) *)

i0:(X, cert(b, Y))  ->  i0:(X, cert(b, Y), mult(point, o, o, o, s(o), o, o, o, o, o), cert(a, pk(sk(a))));

  (*    rule:  i0: (X, cert(b, Y))->i0: (X, cert(b, Y), point*nb(c), cert(c, pk(sk(c)))) *)
  (* aux.var: *)
  (*  result:  i0: (X, cert(b, Y))->i0: (X, cert(b, Y), mult(point, o, o, o, o, o, s(o), o, o, o), cert(c, pk(sk(c)))) *)

i0:(X, cert(b, Y))  ->  i0:(X, cert(b, Y), mult(point, o, o, o, o, o, s(o), o, o, o), cert(c, pk(sk(c))));

  (*    rule:  i0: (X, cert(c, Y))->i0: (X, cert(c, Y), point*nb(a), cert(a, pk(sk(a)))) *)
  (* aux.var: *)
  (*  result:  i0: (X, cert(c, Y))->i0: (X, cert(c, Y), mult(point, o, o, o, s(o), o, o, o, o, o), cert(a, pk(sk(a)))) *)

i0:(X, cert(c, Y))  ->  i0:(X, cert(c, Y), mult(point, o, o, o, s(o), o, o, o, o, o), cert(a, pk(sk(a))));

  (*    rule:  i0: (X, cert(c, Y))->i0: (X, cert(c, Y), point*nb(b), cert(b, pk(sk(b)))) *)
  (* aux.var: *)
  (*  result:  i0: (X, cert(c, Y))->i0: (X, cert(c, Y), mult(point, o, o, o, o, s(o), o, o, o, o), cert(b, pk(sk(b)))) *)

i0:(X, cert(c, Y))  ->  i0:(X, cert(c, Y), mult(point, o, o, o, o, s(o), o, o, o, o), cert(b, pk(sk(b))));

  (*    rule:  i0: ((X, cert(c, pk(Y)), enc(e_(Z, X)^nb(b), sign(Y, (a, b, Z, point*nb(b), X))), enc(e_(Z, X)^nb(b), sign(A1, (b, c, Z, point*nb(b), X)))), Z, cert(a, pk(A1)))->i0: (enc(e_(Z, X)^nb(b), sign(A1, (b, c, Z, point*nb(b), X))), enc(e_(Z, X)^nb(b), sign(sk(b), (a, c, Z, point*nb(b), X)))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(b), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(c, pk(Y)), enc(x1, sign(Y, (a, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))), Z, cert(a, pk(A1)))->i0: (enc(x1, sign(A1, (b, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(sk(b), (a, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))) *)

nexp:x2,nb(b),x1 & npair:Z,X,x2 &
i0:((X, cert(c, pk(Y)), enc(x1, sign(Y, (a, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))), Z, cert(a, pk(A1)))  ->  i0:(enc(x1, sign(A1, (b, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(sk(b), (a, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))));

  (*    rule:  i0: ((X, cert(b, pk(Y)), enc(e_(Z, X)^nb(c), sign(Y, (a, c, Z, point*nb(c), X))), enc(e_(Z, X)^nb(c), sign(A1, (c, b, Z, point*nb(c), X)))), Z, cert(a, pk(A1)))->i0: (enc(e_(Z, X)^nb(c), sign(A1, (c, b, Z, point*nb(c), X))), enc(e_(Z, X)^nb(c), sign(sk(c), (a, b, Z, point*nb(c), X)))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(c), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(b, pk(Y)), enc(x1, sign(Y, (a, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))), Z, cert(a, pk(A1)))->i0: (enc(x1, sign(A1, (c, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(sk(c), (a, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))) *)

nexp:x2,nb(c),x1 & npair:Z,X,x2 &
i0:((X, cert(b, pk(Y)), enc(x1, sign(Y, (a, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))), Z, cert(a, pk(A1)))  ->  i0:(enc(x1, sign(A1, (c, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(sk(c), (a, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))));

  (*    rule:  i0: ((X, cert(c, pk(Y)), enc(e_(Z, X)^nb(a), sign(Y, (b, a, Z, point*nb(a), X))), enc(e_(Z, X)^nb(a), sign(A1, (a, c, Z, point*nb(a), X)))), Z, cert(b, pk(A1)))->i0: (enc(e_(Z, X)^nb(a), sign(A1, (a, c, Z, point*nb(a), X))), enc(e_(Z, X)^nb(a), sign(sk(a), (b, c, Z, point*nb(a), X)))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(a), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(c, pk(Y)), enc(x1, sign(Y, (b, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))), Z, cert(b, pk(A1)))->i0: (enc(x1, sign(A1, (a, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(sk(a), (b, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))) *)

nexp:x2,nb(a),x1 & npair:Z,X,x2 &
i0:((X, cert(c, pk(Y)), enc(x1, sign(Y, (b, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))), Z, cert(b, pk(A1)))  ->  i0:(enc(x1, sign(A1, (a, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(sk(a), (b, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))));

  (*    rule:  i0: ((X, cert(a, pk(Y)), enc(e_(Z, X)^nb(c), sign(Y, (b, c, Z, point*nb(c), X))), enc(e_(Z, X)^nb(c), sign(A1, (c, a, Z, point*nb(c), X)))), Z, cert(b, pk(A1)))->i0: (enc(e_(Z, X)^nb(c), sign(A1, (c, a, Z, point*nb(c), X))), enc(e_(Z, X)^nb(c), sign(sk(c), (b, a, Z, point*nb(c), X)))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(c), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(a, pk(Y)), enc(x1, sign(Y, (b, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))), Z, cert(b, pk(A1)))->i0: (enc(x1, sign(A1, (c, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(sk(c), (b, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))) *)

nexp:x2,nb(c),x1 & npair:Z,X,x2 &
i0:((X, cert(a, pk(Y)), enc(x1, sign(Y, (b, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))), Z, cert(b, pk(A1)))  ->  i0:(enc(x1, sign(A1, (c, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(sk(c), (b, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))));

  (*    rule:  i0: ((X, cert(b, pk(Y)), enc(e_(Z, X)^nb(a), sign(Y, (c, a, Z, point*nb(a), X))), enc(e_(Z, X)^nb(a), sign(A1, (a, b, Z, point*nb(a), X)))), Z, cert(c, pk(A1)))->i0: (enc(e_(Z, X)^nb(a), sign(A1, (a, b, Z, point*nb(a), X))), enc(e_(Z, X)^nb(a), sign(sk(a), (c, b, Z, point*nb(a), X)))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(a), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(b, pk(Y)), enc(x1, sign(Y, (c, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))), Z, cert(c, pk(A1)))->i0: (enc(x1, sign(A1, (a, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(sk(a), (c, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))) *)

nexp:x2,nb(a),x1 & npair:Z,X,x2 &
i0:((X, cert(b, pk(Y)), enc(x1, sign(Y, (c, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))), Z, cert(c, pk(A1)))  ->  i0:(enc(x1, sign(A1, (a, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(sk(a), (c, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))));

  (*    rule:  i0: ((X, cert(a, pk(Y)), enc(e_(Z, X)^nb(b), sign(Y, (c, b, Z, point*nb(b), X))), enc(e_(Z, X)^nb(b), sign(A1, (b, a, Z, point*nb(b), X)))), Z, cert(c, pk(A1)))->i0: (enc(e_(Z, X)^nb(b), sign(A1, (b, a, Z, point*nb(b), X))), enc(e_(Z, X)^nb(b), sign(sk(b), (c, a, Z, point*nb(b), X)))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(b), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(a, pk(Y)), enc(x1, sign(Y, (c, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))), Z, cert(c, pk(A1)))->i0: (enc(x1, sign(A1, (b, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(sk(b), (c, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))) *)

nexp:x2,nb(b),x1 & npair:Z,X,x2 &
i0:((X, cert(a, pk(Y)), enc(x1, sign(Y, (c, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))), Z, cert(c, pk(A1)))  ->  i0:(enc(x1, sign(A1, (b, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(sk(b), (c, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))));

  (*    rule:  i0: ((X, cert(c, pk(Y)), enc(e_(Z, X)^nb(b), sign(Y, (a, b, Z, point*nb(b), X))), enc(e_(Z, X)^nb(b), sign(A1, (b, c, Z, point*nb(b), X)))), Z, cert(a, pk(A1)))->i0:enc(e_(Z, X)^nb(b), sign(sk(b), (a, c, Z, point*nb(b), X))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(b), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(c, pk(Y)), enc(x1, sign(Y, (a, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))), Z, cert(a, pk(A1)))->i0:enc(x1, sign(sk(b), (a, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))) *)

nexp:x2,nb(b),x1 & npair:Z,X,x2 &
i0:((X, cert(c, pk(Y)), enc(x1, sign(Y, (a, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))), Z, cert(a, pk(A1)))  ->  i0:enc(x1, sign(sk(b), (a, c, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)));

  (*    rule:  i0: ((X, cert(b, pk(Y)), enc(e_(Z, X)^nb(c), sign(Y, (a, c, Z, point*nb(c), X))), enc(e_(Z, X)^nb(c), sign(A1, (c, b, Z, point*nb(c), X)))), Z, cert(a, pk(A1)))->i0:enc(e_(Z, X)^nb(c), sign(sk(c), (a, b, Z, point*nb(c), X))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(c), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(b, pk(Y)), enc(x1, sign(Y, (a, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))), Z, cert(a, pk(A1)))->i0:enc(x1, sign(sk(c), (a, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))) *)

nexp:x2,nb(c),x1 & npair:Z,X,x2 &
i0:((X, cert(b, pk(Y)), enc(x1, sign(Y, (a, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))), Z, cert(a, pk(A1)))  ->  i0:enc(x1, sign(sk(c), (a, b, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)));

  (*    rule:  i0: ((X, cert(c, pk(Y)), enc(e_(Z, X)^nb(a), sign(Y, (b, a, Z, point*nb(a), X))), enc(e_(Z, X)^nb(a), sign(A1, (a, c, Z, point*nb(a), X)))), Z, cert(b, pk(A1)))->i0:enc(e_(Z, X)^nb(a), sign(sk(a), (b, c, Z, point*nb(a), X))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(a), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(c, pk(Y)), enc(x1, sign(Y, (b, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))), Z, cert(b, pk(A1)))->i0:enc(x1, sign(sk(a), (b, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))) *)

nexp:x2,nb(a),x1 & npair:Z,X,x2 &
i0:((X, cert(c, pk(Y)), enc(x1, sign(Y, (b, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))), Z, cert(b, pk(A1)))  ->  i0:enc(x1, sign(sk(a), (b, c, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)));

  (*    rule:  i0: ((X, cert(a, pk(Y)), enc(e_(Z, X)^nb(c), sign(Y, (b, c, Z, point*nb(c), X))), enc(e_(Z, X)^nb(c), sign(A1, (c, a, Z, point*nb(c), X)))), Z, cert(b, pk(A1)))->i0:enc(e_(Z, X)^nb(c), sign(sk(c), (b, a, Z, point*nb(c), X))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(c), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(a, pk(Y)), enc(x1, sign(Y, (b, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))), Z, cert(b, pk(A1)))->i0:enc(x1, sign(sk(c), (b, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))) *)

nexp:x2,nb(c),x1 & npair:Z,X,x2 &
i0:((X, cert(a, pk(Y)), enc(x1, sign(Y, (b, c, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X))), enc(x1, sign(A1, (c, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)))), Z, cert(b, pk(A1)))  ->  i0:enc(x1, sign(sk(c), (b, a, Z, mult(point, o, o, o, o, o, s(o), o, o, o), X)));

  (*    rule:  i0: ((X, cert(b, pk(Y)), enc(e_(Z, X)^nb(a), sign(Y, (c, a, Z, point*nb(a), X))), enc(e_(Z, X)^nb(a), sign(A1, (a, b, Z, point*nb(a), X)))), Z, cert(c, pk(A1)))->i0:enc(e_(Z, X)^nb(a), sign(sk(a), (c, b, Z, point*nb(a), X))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(a), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(b, pk(Y)), enc(x1, sign(Y, (c, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))), Z, cert(c, pk(A1)))->i0:enc(x1, sign(sk(a), (c, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))) *)

nexp:x2,nb(a),x1 & npair:Z,X,x2 &
i0:((X, cert(b, pk(Y)), enc(x1, sign(Y, (c, a, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X))), enc(x1, sign(A1, (a, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)))), Z, cert(c, pk(A1)))  ->  i0:enc(x1, sign(sk(a), (c, b, Z, mult(point, o, o, o, s(o), o, o, o, o, o), X)));

  (*    rule:  i0: ((X, cert(a, pk(Y)), enc(e_(Z, X)^nb(b), sign(Y, (c, b, Z, point*nb(b), X))), enc(e_(Z, X)^nb(b), sign(A1, (b, a, Z, point*nb(b), X)))), Z, cert(c, pk(A1)))->i0:enc(e_(Z, X)^nb(b), sign(sk(b), (c, a, Z, point*nb(b), X))) *)
  (* aux.var:  x1 = e_(Z, X)^nb(b), x2 = e_(Z, X) *)
  (*  result:  i0: ((X, cert(a, pk(Y)), enc(x1, sign(Y, (c, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))), Z, cert(c, pk(A1)))->i0:enc(x1, sign(sk(b), (c, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))) *)

nexp:x2,nb(b),x1 & npair:Z,X,x2 &
i0:((X, cert(a, pk(Y)), enc(x1, sign(Y, (c, b, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X))), enc(x1, sign(A1, (b, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)))), Z, cert(c, pk(A1)))  ->  i0:enc(x1, sign(sk(b), (c, a, Z, mult(point, o, o, o, o, s(o), o, o, o, o), X)));

  (*    rule:  i0: (X, cert(a, Y), Z, cert(b, A1))->i0: (Z, cert(b, A1), point*nc(c), cert(c, pk(sk(c))), enc(e_(X, Z)^nc(c), sign(sk(c), (a, b, X, Z, point*nc(c))))) *)
  (* aux.var:  x1 = e_(X, Z)^nc(c), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(a, Y), Z, cert(b, A1))->i0: (Z, cert(b, A1), mult(point, o, o, o, o, o, o, o, o, s(o)), cert(c, pk(sk(c))), enc(x1, sign(sk(c), (a, b, X, Z, mult(point, o, o, o, o, o, o, o, o, s(o)))))) *)

nexp:x2,nc(c),x1 & npair:X,Z,x2 &
i0:(X, cert(a, Y), Z, cert(b, A1))  ->  i0:(Z, cert(b, A1), mult(point, o, o, o, o, o, o, o, o, s(o)), cert(c, pk(sk(c))), enc(x1, sign(sk(c), (a, b, X, Z, mult(point, o, o, o, o, o, o, o, o, s(o))))));

  (*    rule:  i0: (X, cert(a, Y), Z, cert(c, A1))->i0: (Z, cert(c, A1), point*nc(b), cert(b, pk(sk(b))), enc(e_(X, Z)^nc(b), sign(sk(b), (a, c, X, Z, point*nc(b))))) *)
  (* aux.var:  x1 = e_(X, Z)^nc(b), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(a, Y), Z, cert(c, A1))->i0: (Z, cert(c, A1), mult(point, o, o, o, o, o, o, o, s(o), o), cert(b, pk(sk(b))), enc(x1, sign(sk(b), (a, c, X, Z, mult(point, o, o, o, o, o, o, o, s(o), o))))) *)

nexp:x2,nc(b),x1 & npair:X,Z,x2 &
i0:(X, cert(a, Y), Z, cert(c, A1))  ->  i0:(Z, cert(c, A1), mult(point, o, o, o, o, o, o, o, s(o), o), cert(b, pk(sk(b))), enc(x1, sign(sk(b), (a, c, X, Z, mult(point, o, o, o, o, o, o, o, s(o), o)))));

  (*    rule:  i0: (X, cert(b, Y), Z, cert(a, A1))->i0: (Z, cert(a, A1), point*nc(c), cert(c, pk(sk(c))), enc(e_(X, Z)^nc(c), sign(sk(c), (b, a, X, Z, point*nc(c))))) *)
  (* aux.var:  x1 = e_(X, Z)^nc(c), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(b, Y), Z, cert(a, A1))->i0: (Z, cert(a, A1), mult(point, o, o, o, o, o, o, o, o, s(o)), cert(c, pk(sk(c))), enc(x1, sign(sk(c), (b, a, X, Z, mult(point, o, o, o, o, o, o, o, o, s(o)))))) *)

nexp:x2,nc(c),x1 & npair:X,Z,x2 &
i0:(X, cert(b, Y), Z, cert(a, A1))  ->  i0:(Z, cert(a, A1), mult(point, o, o, o, o, o, o, o, o, s(o)), cert(c, pk(sk(c))), enc(x1, sign(sk(c), (b, a, X, Z, mult(point, o, o, o, o, o, o, o, o, s(o))))));

  (*    rule:  i0: (X, cert(b, Y), Z, cert(c, A1))->i0: (Z, cert(c, A1), point*nc(a), cert(a, pk(sk(a))), enc(e_(X, Z)^nc(a), sign(sk(a), (b, c, X, Z, point*nc(a))))) *)
  (* aux.var:  x1 = e_(X, Z)^nc(a), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(b, Y), Z, cert(c, A1))->i0: (Z, cert(c, A1), mult(point, o, o, o, o, o, o, s(o), o, o), cert(a, pk(sk(a))), enc(x1, sign(sk(a), (b, c, X, Z, mult(point, o, o, o, o, o, o, s(o), o, o))))) *)

nexp:x2,nc(a),x1 & npair:X,Z,x2 &
i0:(X, cert(b, Y), Z, cert(c, A1))  ->  i0:(Z, cert(c, A1), mult(point, o, o, o, o, o, o, s(o), o, o), cert(a, pk(sk(a))), enc(x1, sign(sk(a), (b, c, X, Z, mult(point, o, o, o, o, o, o, s(o), o, o)))));

  (*    rule:  i0: (X, cert(c, Y), Z, cert(a, A1))->i0: (Z, cert(a, A1), point*nc(b), cert(b, pk(sk(b))), enc(e_(X, Z)^nc(b), sign(sk(b), (c, a, X, Z, point*nc(b))))) *)
  (* aux.var:  x1 = e_(X, Z)^nc(b), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(c, Y), Z, cert(a, A1))->i0: (Z, cert(a, A1), mult(point, o, o, o, o, o, o, o, s(o), o), cert(b, pk(sk(b))), enc(x1, sign(sk(b), (c, a, X, Z, mult(point, o, o, o, o, o, o, o, s(o), o))))) *)

nexp:x2,nc(b),x1 & npair:X,Z,x2 &
i0:(X, cert(c, Y), Z, cert(a, A1))  ->  i0:(Z, cert(a, A1), mult(point, o, o, o, o, o, o, o, s(o), o), cert(b, pk(sk(b))), enc(x1, sign(sk(b), (c, a, X, Z, mult(point, o, o, o, o, o, o, o, s(o), o)))));

  (*    rule:  i0: (X, cert(c, Y), Z, cert(b, A1))->i0: (Z, cert(b, A1), point*nc(a), cert(a, pk(sk(a))), enc(e_(X, Z)^nc(a), sign(sk(a), (c, b, X, Z, point*nc(a))))) *)
  (* aux.var:  x1 = e_(X, Z)^nc(a), x2 = e_(X, Z) *)
  (*  result:  i0: (X, cert(c, Y), Z, cert(b, A1))->i0: (Z, cert(b, A1), mult(point, o, o, o, o, o, o, s(o), o, o), cert(a, pk(sk(a))), enc(x1, sign(sk(a), (c, b, X, Z, mult(point, o, o, o, o, o, o, s(o), o, o))))) *)

nexp:x2,nc(a),x1 & npair:X,Z,x2 &
i0:(X, cert(c, Y), Z, cert(b, A1))  ->  i0:(Z, cert(b, A1), mult(point, o, o, o, o, o, o, s(o), o, o), cert(a, pk(sk(a))), enc(x1, sign(sk(a), (c, b, X, Z, mult(point, o, o, o, o, o, o, s(o), o, o)))));

(***** End of User rules *****)
i:x -> i:x.
