Linear part:
Completing equations...
Completed equations:
Convergent part:
host(key(x_22)) = x_22
key(host(x_21)) = x_21
Completing equations...
Completed equations:
key(host(x_21)) = x_21
host(key(x_22)) = x_22
Completed destructors:
PtCredVerifyPtIDDr(zk((Ptr_277,PtID_278,PtNym_279,PtHII_280,PtSSS_281,PtAcc_282,rpt_283),(comt(PtID_278,Ptr_277),PtCred(PtID_278,PtNym_279,PtHII_280,PtSSS_281,PtAcc_282,rpt_283))),comt(PtID_278,Ptr_277),PtCred(PtID_278,PtNym_279,PtHII_280,PtSSS_281,PtAcc_282,rpt_283)) => true()
getpubmsg(spk(x_285,y_284,z_286)) => y_284
getmessage(sign(x_287,y_288),pk(y_288)) => x_287
open(comt(x_289,y_290),y_290) => x_289
PtCredVerifyPh(zk((PtID_291,PtNym_292,PtHII_293,PtSSS_294,PtAcc_295,rpt_296),(PtCred(PtID_291,PtNym_292,PtHII_293,PtSSS_294,PtAcc_295,rpt_296),PtSSS_294)),PtCred(PtID_291,PtNym_292,PtHII_293,PtSSS_294,PtAcc_295,rpt_296),PtSSS_294) => true()
getmsg(spk(x_298,y_299,z_297)) => z_297
CheckReceptionAck(spk((PtID_300,PtNym_301,PtHII_302,PtSSS_303,PtAcc_304,rpt_305),PtCred(PtID_300,PtNym_301,PtHII_302,PtSSS_303,PtAcc_304,rpt_305),(xPrescID_306,xPharmID_307,vc1_308,vc2_309,vc3_310,vc31_311,vc4_312,c5_313)),PtCred(PtID_300,PtNym_301,PtHII_302,PtSSS_303,PtAcc_304,rpt_305),xPrescID_306,xPharmID_307,vc1_308,vc2_309,vc3_310,vc31_311,vc4_312,c5_313) => true()
DrCredVerify(zk((DrNym_314,DrID_315,rdr_316),DrCred(DrNym_314,DrID_315,rdr_316)),DrCred(DrNym_314,DrID_315,rdr_316)) => true()
checkAuth(sign(x_317,y_318),pk(y_318)) => true()
CheckSPKDrPtDrNym(spk((DrNym_319,Drr_320,DrID_321,rdr_322),(comt(DrNym_319,Drr_320),DrCred(DrNym_319,DrID_321,rdr_322)),(PrescText_323,PrescID_324,comt(DrNym_319,Drr_320),comt(PtID_325,Ptr_326))),DrCred(DrNym_319,DrID_321,rdr_322),PrescText_323,PrescID_324,comt(DrNym_319,Drr_320),comt(PtID_325,Ptr_326)) => true()
CheckVEncHii(zk((PtID_327,PtNym_328,PtHII_329,PtSSS_330,PtAcc_331,rpt_332,r_333),(PtCred(PtID_327,PtNym_328,PtHII_329,PtSSS_330,PtAcc_331,rpt_332),penc(PtHII_329,pubkey_334,r_333))),PtCred(PtID_327,PtNym_328,PtHII_329,PtSSS_330,PtAcc_331,rpt_332),penc(PtHII_329,pubkey_334,r_333),pubkey_334) => true()
CheckVEncPtnym(zk((PtID_335,PtNym_336,PtHII_337,PtSSS_338,PtAcc_339,rpt_340,r_341),(PtCred(PtID_335,PtNym_336,PtHII_337,PtSSS_338,PtAcc_339,rpt_340),penc(PtNym_336,pubkey_342,r_341))),PtCred(PtID_335,PtNym_336,PtHII_337,PtSSS_338,PtAcc_339,rpt_340),penc(PtNym_336,pubkey_342,r_341),pubkey_342) => true()
PtCredVerifyDr(zk((PtID_343,PtNym_344,PtHII_345,PtSSS_346,PtAcc_347,rpt_348),PtCred(PtID_343,PtNym_344,PtHII_345,PtSSS_346,PtAcc_347,rpt_348)),PtCred(PtID_343,PtNym_344,PtHII_345,PtSSS_346,PtAcc_347,rpt_348)) => true()
CheckVEncDrnymMpa(zk((DrNym_349,Drr_350,r_351),(spk((DrNym_349,Drr_350,DrID_352,rdr_353),(comt(DrNym_349,Drr_350),DrCred(DrNym_349,DrID_352,rdr_353)),(PrescText_354,PrescID_355,comt(DrNym_349,Drr_350),xPtComt_356)),penc(DrNym_349,pkMPA_357,r_351))),spk((DrNym_349,Drr_350,DrID_352,rdr_353),(comt(DrNym_349,Drr_350),DrCred(DrNym_349,DrID_352,rdr_353)),(PrescText_354,PrescID_355,comt(DrNym_349,Drr_350),xPtComt_356)),penc(DrNym_349,pkMPA_357,r_351),pkMPA_357) => true()
getpublic(zk(x_359,y_358)) => y_358
dec(penc(m_360,pk(sk_361),r_362),sk_361) => m_360
CheckSPKPhPtID(spk((PtID_363,PtNym_364,PtHII_365,PtSSS_366,PtAcc_367,Ptr_368,rpt_369),(PtCred(PtID_363,PtNym_364,PtHII_365,PtSSS_366,PtAcc_367,rpt_369),comt(PtID_363,Ptr_368)),nonce_370),PtCred(PtID_363,PtNym_364,PtHII_365,PtSSS_366,PtAcc_367,rpt_369),comt(PtID_363,Ptr_368),nonce_370) => true()
Process:
{1}new skSSO_100;
{2}new privchhiipt_101;
{3}new privchmpaph_102;
{4}new privchphpt_103;
{5}let pkSSO_104 = pk(skSSO_100) in
{6}out(ch, pkSSO_104);
{7}!
(
    {8}new nDrID_105;
    {9}let DrID_106 = nDrID_105 in
    {10}!
    {11}new nDrNym_107;
    {12}let DrNym_108 = nDrNym_107 in
    {13}new rdr_109;
    {14}out(ch, zk((DrNym_108,DrID_106,rdr_109),DrCred(DrNym_108,DrID_106,rdr_109)));
    {15}in(ch, (xPtAuthProof_110,xPtDrPtIDProof_111));
    {16}let xPtCred_112 = getpublic(xPtAuthProof_110) in
    {17}let (xPtComt_113,=xPtCred_112) = getpublic(xPtDrPtIDProof_111) in
    {18}if PtCredVerifyDr(xPtAuthProof_110,xPtCred_112) = true() then
    {19}if PtCredVerifyPtIDDr(xPtDrPtIDProof_111,xPtComt_113,xPtCred_112) = true() then
    {20}new PrescText_114;
    {21}new Drr_115;
    {22}let PrescID_116 = hash(PrescText_114,xPtComt_113,comt(DrNym_108,Drr_115)) in
    {23}out(ch, (spk((DrNym_108,Drr_115,DrID_106,rdr_109),(comt(DrNym_108,Drr_115),DrCred(DrNym_108,DrID_106,rdr_109)),(PrescText_114,PrescID_116,comt(DrNym_108,Drr_115),xPtComt_113)),Drr_115))
) | (
    {24}in(privchhiipt_101, PtHII_117);
    {25}let cpkHII_118 = key(PtHII_117) in
    {26}new nPtNym_119;
    {27}new nPtAcc_120;
    (
        {28}let PtID_121 = A in
        {29}let PtNym_122 = nPtNym_119 in
        {30}let PtAcc_123 = nPtAcc_120 in
        {31}new nPtSSS_124;
        {32}new wPtSSS_125;
        {33}let PtSSS_126 = choice[nPtSSS_124,wPtSSS_125] in
        {34}in(privchphpt_103, cpkPh_127);
        {35}let cPharmID_128 = host(cpkPh_127) in
        {36}in(ch, xDrCredProof_129);
        {37}let xDrCred_130 = getpublic(xDrCredProof_129) in
        {38}if DrCredVerify(xDrCredProof_129,xDrCred_130) = true() then
        {39}new Ptr_131;
        {40}new rpt_132;
        {41}out(ch, (zk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132)),zk((Ptr_131,PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),(comt(PtID_121,Ptr_131),PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132)))));
        {42}in(ch, (xSPKDrPtDrNym_133,xDrr_134));
        {43}let (xPrescText_135,xPrescID_136,xDrComt_137,=comt(PtID_121,Ptr_131)) = getmsg(xSPKDrPtDrNym_133) in
        {44}if CheckSPKDrPtDrNym(xSPKDrPtDrNym_133,xDrCred_130,xPrescText_135,xPrescID_136,xDrComt_137,comt(PtID_121,Ptr_131)) = true() then
        {45}let xDrNym_138 = open(xDrComt_137,xDrr_134) in
        {46}in(ch, xPhAuth_139);
        {47}if checkAuth(xPhAuth_139,cpkPh_127) = true() then
        {48}let (=cPharmID_128,xMpaID_140) = getmessage(xPhAuth_139,cpkPh_127) in
        {49}let cpkMPA_141 = key(xMpaID_140) in
        {50}out(ch, zk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),(PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),PtSSS_126)));
        {51}new nonce_142;
        {52}new r_143;
        {53}let vc1_144 = zk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132,r_143),(PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),penc(PtHII_117,cpkMPA_141,r_143))) in
        {54}let vc2_145 = zk((xDrNym_138,xDrr_134,r_143),(xSPKDrPtDrNym_133,penc(xDrNym_138,cpkMPA_141,r_143))) in
        {55}let vc3_146 = zk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132,r_143),(PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),penc(PtNym_122,pkSSO_104,r_143))) in
        {56}let vc31_147 = zk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132,r_143),(PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),penc(PtHII_117,pkSSO_104,r_143))) in
        {57}let vc4_148 = zk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132,r_143),(PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),penc(PtNym_122,cpkMPA_141,r_143))) in
        {58}let vc5_149 = zk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132,r_143),(PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),penc(PtNym_122,cpkHII_118,r_143))) in
        {59}let c5_150 = penc(vc5_149,cpkMPA_141,r_143) in
        {60}out(ch, (xSPKDrPtDrNym_133,spk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,Ptr_131,rpt_132),(PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),comt(PtID_121,Ptr_131)),nonce_142),vc1_144,vc2_145,vc3_146,vc31_147,vc4_148,c5_150));
        {61}in(ch, xInvoice_151);
        {62}let ReceptionAck_152 = spk((PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),PtCred(PtID_121,PtNym_122,PtHII_117,PtSSS_126,PtAcc_123,rpt_132),(xPrescID_136,cPharmID_128,vc1_144,vc2_145,vc3_146,vc31_147,vc4_148,c5_150)) in
        {63}out(ch, ReceptionAck_152)
    ) | (
        {64}new wPtNym_153;
        {65}new wPtAcc_154;
        {66}let PtID_155 = choice[A,B] in
        {67}let PtNym_156 = choice[nPtNym_119,wPtNym_153] in
        {68}let PtAcc_157 = choice[nPtAcc_120,wPtAcc_154] in
        {69}new wPtSSS_158;
        {70}new nPtSSS_159;
        {71}let PtSSS_160 = choice[nPtSSS_159,wPtSSS_158] in
        {72}in(privchphpt_103, cpkPh_161);
        {73}let cPharmID_162 = host(cpkPh_161) in
        {74}in(ch, xDrCredProof_163);
        {75}let xDrCred_164 = getpublic(xDrCredProof_163) in
        {76}if DrCredVerify(xDrCredProof_163,xDrCred_164) = true() then
        {77}new Ptr_165;
        {78}new rpt_166;
        {79}out(ch, (zk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166)),zk((Ptr_165,PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),(comt(PtID_155,Ptr_165),PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166)))));
        {80}in(ch, (xSPKDrPtDrNym_167,xDrr_168));
        {81}let (xPrescText_169,xPrescID_170,xDrComt_171,=comt(PtID_155,Ptr_165)) = getmsg(xSPKDrPtDrNym_167) in
        {82}if CheckSPKDrPtDrNym(xSPKDrPtDrNym_167,xDrCred_164,xPrescText_169,xPrescID_170,xDrComt_171,comt(PtID_155,Ptr_165)) = true() then
        {83}let xDrNym_172 = open(xDrComt_171,xDrr_168) in
        {84}in(ch, xPhAuth_173);
        {85}if checkAuth(xPhAuth_173,cpkPh_161) = true() then
        {86}let (=cPharmID_162,xMpaID_174) = getmessage(xPhAuth_173,cpkPh_161) in
        {87}let cpkMPA_175 = key(xMpaID_174) in
        {88}out(ch, zk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),(PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),PtSSS_160)));
        {89}new nonce_176;
        {90}new r_177;
        {91}let vc1_178 = zk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166,r_177),(PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),penc(PtHII_117,cpkMPA_175,r_177))) in
        {92}let vc2_179 = zk((xDrNym_172,xDrr_168,r_177),(xSPKDrPtDrNym_167,penc(xDrNym_172,cpkMPA_175,r_177))) in
        {93}let vc3_180 = zk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166,r_177),(PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),penc(PtNym_156,pkSSO_104,r_177))) in
        {94}let vc31_181 = zk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166,r_177),(PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),penc(PtHII_117,pkSSO_104,r_177))) in
        {95}let vc4_182 = zk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166,r_177),(PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),penc(PtNym_156,cpkMPA_175,r_177))) in
        {96}let vc5_183 = zk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166,r_177),(PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),penc(PtNym_156,cpkHII_118,r_177))) in
        {97}let c5_184 = penc(vc5_183,cpkMPA_175,r_177) in
        {98}out(ch, (xSPKDrPtDrNym_167,spk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,Ptr_165,rpt_166),(PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),comt(PtID_155,Ptr_165)),nonce_176),vc1_178,vc2_179,vc3_180,vc31_181,vc4_182,c5_184));
        {99}in(ch, xInvoice_185);
        {100}let ReceptionAck_186 = spk((PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),PtCred(PtID_155,PtNym_156,PtHII_117,PtSSS_160,PtAcc_157,rpt_166),(xPrescID_170,cPharmID_162,vc1_178,vc2_179,vc3_180,vc31_181,vc4_182,c5_184)) in
        {101}out(ch, ReceptionAck_186)
    )
) | (
    {102}!
    (
        {103}new nskPh_187;
        {104}let skPh_188 = nskPh_187 in
        {105}let pkPh_189 = pk(skPh_188) in
        {106}let PharmID_190 = host(pkPh_189) in
        {107}!
        (
            {108}out(ch, pkPh_189)
        ) | (
            {109}!
            (
                {110}out(privchphpt_103, pkPh_189)
            ) | (
                {111}!
                {112}in(privchmpaph_102, dpkMPA_191);
                {113}let dMpaID_192 = host(dpkMPA_191) in
                {114}out(ch, sign((PharmID_190,dMpaID_192),skPh_188));
                {115}in(ch, xPhPtAuthProof_193);
                {116}let (xPhPtCred_194,xPhPtSSS_195) = getpublic(xPhPtAuthProof_193) in
                {117}if PtCredVerifyPh(xPhPtAuthProof_193,xPhPtCred_194,xPhPtSSS_195) = true() then
                {118}in(ch, (xPhSPKDrPtDrNym_196,xPtPhSPKPtID_197,xvc1_198,xvc2_199,xvc3_200,xvc31_201,xvc4_202,xc5_203));
                {119}let (xPhPrescText_204,xPhPrescID_205,xPhDrComt_206,xPhPtComt_207) = getmsg(xPhSPKDrPtDrNym_196) in
                {120}let (=xPhDrComt_206,xPhDrCred_208) = getpubmsg(xPhSPKDrPtDrNym_196) in
                {121}if CheckSPKDrPtDrNym(xPhSPKDrPtDrNym_196,xPhDrCred_208,xPhPrescText_204,xPhPrescID_205,xPhDrComt_206,xPhPtComt_207) = true() then
                {122}let xnonce_209 = getmsg(xPtPhSPKPtID_197) in
                {123}if CheckSPKPhPtID(xPtPhSPKPtID_197,xPhPtCred_194,xPhPtComt_207,xnonce_209) = true() then
                {124}let (=xPhPtCred_194,xEnc1_210) = getpublic(xvc1_198) in
                {125}if CheckVEncHii(xvc1_198,xPhPtCred_194,xEnc1_210,dpkMPA_191) = true() then
                {126}let (=xPhSPKDrPtDrNym_196,xEnc2_211) = getpublic(xvc2_199) in
                {127}if CheckVEncDrnymMpa(xvc2_199,xPhSPKDrPtDrNym_196,xEnc2_211,dpkMPA_191) = true() then
                {128}let (=xPhPtCred_194,xEnc3_212) = getpublic(xvc3_200) in
                {129}if CheckVEncPtnym(xvc3_200,xPhPtCred_194,xEnc3_212,pkSSO_104) = true() then
                {130}let (=xPhPtCred_194,xEnc31_213) = getpublic(xvc31_201) in
                {131}if CheckVEncHii(xvc31_201,xPhPtCred_194,xEnc31_213,pkSSO_104) = true() then
                {132}let (=xPhPtCred_194,xEnc4_214) = getpublic(xvc4_202) in
                {133}if CheckVEncPtnym(xvc4_202,xPhPtCred_194,xEnc4_214,dpkMPA_191) = true() then
                {134}out(ch, invoice(xPhPrescID_205));
                {135}in(ch, xReceptionAck_215);
                {136}if CheckReceptionAck(xReceptionAck_215,xPhPtCred_194,xPhPrescID_205,PharmID_190,xvc1_198,xvc2_199,xvc3_200,xvc31_201,xvc4_202,xc5_203) = true() then
                {137}out(ch, (sign((PharmID_190,dMpaID_192),skPh_188),PharmID_190));
                {138}in(ch, xMpaAuth_216);
                {139}if checkAuth(xMpaAuth_216,dpkMPA_191) = true() then
                {140}out(ch, (xPhSPKDrPtDrNym_196,xvc1_198,xvc2_199,xvc3_200,xvc31_201,xvc4_202,xc5_203,xReceptionAck_215))
            )
        )
    ) | (
        {141}!
        (
            {142}new nskMPA_217;
            {143}let skMPA_218 = nskMPA_217 in
            {144}let pkMPA_219 = pk(skMPA_218) in
            {145}let MpaID_220 = host(pkMPA_219) in
            {146}!
            (
                {147}out(ch, pkMPA_219)
            ) | (
                {148}!
                (
                    {149}out(privchmpaph_102, pkMPA_219)
                ) | (
                    {150}!
                    {151}in(ch, (xMpaPhAuth_221,xPharmID_222));
                    {152}let xpkPh_223 = key(xPharmID_222) in
                    {153}if checkAuth(xMpaPhAuth_221,xpkPh_223) = true() then
                    {154}let (=xPharmID_222,=MpaID_220) = getmessage(xMpaPhAuth_221,xpkPh_223) in
                    {155}out(ch, sign(MpaID_220,skMPA_218));
                    {156}in(ch, (xMpaSPKDrPtDrNym_224,xMpaVc1_225,xMpaVc2_226,xMpaVc3_227,xMpaVc31_228,xMpaVc4_229,xMpac5_230,xMpaReceptionAck_231));
                    {157}let (xMpaDrComt_232,xMpaDrCred_233) = getpubmsg(xMpaSPKDrPtDrNym_224) in
                    {158}let (xMpaPrescText_234,xMpaPrescID_235,=xMpaDrComt_232,xMpaPtComt_236) = getmsg(xMpaSPKDrPtDrNym_224) in
                    {159}if CheckSPKDrPtDrNym(xMpaSPKDrPtDrNym_224,xMpaDrCred_233,xMpaPrescText_234,xMpaPrescID_235,xMpaDrComt_232,xMpaPtComt_236) = true() then
                    {160}let (xMpaPtCred_237,xMpaEnc1_238) = getpublic(xMpaVc1_225) in
                    {161}if CheckVEncHii(xMpaVc1_225,xMpaPtCred_237,xMpaEnc1_238,pkMPA_219) = true() then
                    {162}let xMpaPthii_239 = dec(xMpaEnc1_238,skMPA_218) in
                    {163}let (=xMpaSPKDrPtDrNym_224,xMpaEnc2_240) = getpublic(xMpaVc2_226) in
                    {164}if CheckVEncDrnymMpa(xMpaVc2_226,xMpaSPKDrPtDrNym_224,xMpaEnc2_240,pkMPA_219) = true() then
                    {165}let xMpaDrnym_241 = dec(xMpaEnc2_240,skMPA_218) in
                    {166}let (=xMpaPtCred_237,xMpaEnc3_242) = getpublic(xMpaVc3_227) in
                    {167}if CheckVEncPtnym(xMpaVc3_227,xMpaPtCred_237,xMpaEnc3_242,pkSSO_104) = true() then
                    {168}let (=xMpaPtCred_237,xMpaEnc31_243) = getpublic(xMpaVc31_228) in
                    {169}if CheckVEncHii(xMpaVc31_228,xMpaPtCred_237,xMpaEnc31_243,pkSSO_104) = true() then
                    {170}let (=xMpaPtCred_237,xMpaEnc4_244) = getpublic(xMpaVc4_229) in
                    {171}if CheckVEncPtnym(xMpaVc4_229,xMpaPtCred_237,xMpaEnc4_244,pkMPA_219) = true() then
                    {172}let xMpaPtnym_245 = dec(xMpaEnc4_244,skMPA_218) in
                    {173}if CheckReceptionAck(xMpaReceptionAck_231,xMpaPtCred_237,xMpaPrescID_235,xPharmID_222,xMpaVc1_225,xMpaVc2_226,xMpaVc3_227,xMpaVc31_228,xMpaVc4_229,xMpac5_230) = true() then
                    {174}out(ch, (sign(MpaID_220,skMPA_218),MpaID_220));
                    {175}in(ch, xMpaHiiAuth_246);
                    {176}let mpkHII_247 = key(xMpaPthii_239) in
                    {177}if checkAuth(xMpaHiiAuth_246,mpkHII_247) = true() then
                    {178}if getmessage(xMpaHiiAuth_246,mpkHII_247) = xMpaPthii_239 then
                    {179}out(ch, (xMpaReceptionAck_231,dec(xMpac5_230,skMPA_218)));
                    {180}in(ch, xMpaInvoice_248)
                )
            )
        ) | (
            {181}!
            {182}new nskHII_249;
            {183}let skHII_250 = nskHII_249 in
            {184}let pkHII_251 = pk(skHII_250) in
            {185}let HiiID_252 = host(pkHII_251) in
            {186}!
            (
                {187}out(ch, pkHII_251)
            ) | (
                {188}!
                (
                    {189}out(privchhiipt_101, HiiID_252)
                ) | (
                    {190}!
                    {191}in(ch, (xHiiMpaAuth_253,xHiiMpaID_254));
                    {192}let xHiipkMPA_255 = key(xHiiMpaID_254) in
                    {193}if checkAuth(xHiiMpaAuth_253,xHiipkMPA_255) = true() then
                    {194}out(ch, sign(HiiID_252,skHII_250));
                    {195}in(ch, (xHiiReceptionAck_256,xHiiVc5_257));
                    {196}let xHiiPtCred_258 = getpubmsg(xHiiReceptionAck_256) in
                    {197}let (xHiiPrescID_259,xHiiPharmID_260,xHiiVc1_261,xHiiVc2_262,xHiiVc3_263,xHiiVc31_264,xHiiVc4_265,xHiic5_266) = getmsg(xHiiReceptionAck_256) in
                    {198}if CheckReceptionAck(xHiiReceptionAck_256,xHiiPtCred_258,xHiiPrescID_259,xHiiPharmID_260,xHiiVc1_261,xHiiVc2_262,xHiiVc3_263,xHiiVc31_264,xHiiVc4_265,xHiic5_266) = true() then
                    {199}let (=xHiiPtCred_258,xHiiEnc5_267) = getpublic(xHiiVc5_257) in
                    {200}if CheckVEncPtnym(xHiiVc5_257,xHiiPtCred_258,xHiiEnc5_267,pkHII_251) = true() then
                    {201}let xHiiPtnym_268 = dec(xHiiEnc5_267,skHII_250) in
                    {202}out(ch, invoice(xHiiPrescID_259))
                )
            )
        )
    )
)

-- Observational equivalence
Termination warning: v_1621 <> v_1622 & attacker2:v_1620,v_1621 & attacker2:v_1620,v_1622 -> bad:
Selecting 0
Termination warning: v_1624 <> v_1625 & attacker2:v_1624,v_1623 & attacker2:v_1625,v_1623 -> bad:
Selecting 0
Completing...
Termination warning: v_1621 <> v_1622 & attacker2:v_1620,v_1621 & attacker2:v_1620,v_1622 -> bad:
Selecting 0
Termination warning: v_1624 <> v_1625 & attacker2:v_1624,v_1623 & attacker2:v_1625,v_1623 -> bad:
Selecting 0
200 rules inserted. The rule base contains 200 rules. 302 rules in the queue.
400 rules inserted. The rule base contains 399 rules. 272 rules in the queue.
600 rules inserted. The rule base contains 599 rules. 284 rules in the queue.
800 rules inserted. The rule base contains 609 rules. 244 rules in the queue.
nounif attacker2:sign(x_184790,nskHII_249[!4 = *@sid_184791,!3 = *@sid_184792,!2 = *@sid_184793,!1 = *@sid_184794]),sign(x_184795,nskHII_249[!4 = *@sid_184791,!3 = *@sid_184792,!2 = *@sid_184793,!1 = *@sid_184794])/-5000
1000 rules inserted. The rule base contains 789 rules. 210 rules in the queue.
1200 rules inserted. The rule base contains 965 rules. 275 rules in the queue.
1400 rules inserted. The rule base contains 1129 rules. 319 rules in the queue.
1600 rules inserted. The rule base contains 1285 rules. 312 rules in the queue.
1800 rules inserted. The rule base contains 1467 rules. 218 rules in the queue.
2000 rules inserted. The rule base contains 1631 rules. 144 rules in the queue.
2200 rules inserted. The rule base contains 1571 rules. 262 rules in the queue.
2400 rules inserted. The rule base contains 1771 rules. 86 rules in the queue.
2600 rules inserted. The rule base contains 1907 rules. 306 rules in the queue.
2800 rules inserted. The rule base contains 2101 rules. 301 rules in the queue.
3000 rules inserted. The rule base contains 2249 rules. 296 rules in the queue.
3200 rules inserted. The rule base contains 2400 rules. 259 rules in the queue.
3400 rules inserted. The rule base contains 2548 rules. 207 rules in the queue.
3600 rules inserted. The rule base contains 2680 rules. 180 rules in the queue.
3800 rules inserted. The rule base contains 2846 rules. 167 rules in the queue.
4000 rules inserted. The rule base contains 2951 rules. 108 rules in the queue.
4200 rules inserted. The rule base contains 3036 rules. 86 rules in the queue.
4400 rules inserted. The rule base contains 3201 rules. 38 rules in the queue.
RESULT Observational equivalence is true (bad not derivable).
