induct: fixes x :: "event list"   and P :: "event list \<Rightarrow> bool" assumes "x \<in> set_pur"   and "P []"   and "\<And>evsf X B. \<lbrakk>evsf \<in> set_pur; P evsf; X \<in> synth (analz (knows Spy evsf))\<rbrakk> \<Longrightarrow> P (Says Spy B X # evsf)"   and "\<And>evsr A B X. \<lbrakk>evsr \<in> set_pur; P evsr; Says A B X \<in> set evsr\<rbrakk> \<Longrightarrow> P (Gets B X # evsr)"   and "\<And>evsStart LID_M C k M i Pa j Transaction OrderDesc PurchAmt. \<lbrakk>evsStart \<in> set_pur; P evsStart; Number LID_M \<notin> used evsStart; C = Cardholder k; M = Merchant i; Pa = PG j; Transaction = \<lbrace>Agent M, Agent C, Number OrderDesc, Number PurchAmt\<rbrace>; LID_M \<notin> range CardSecret; LID_M \<notin> range PANSecret\<rbrakk> \<Longrightarrow> P (Notes C \<lbrace>Number LID_M, Transaction\<rbrace> # Notes M \<lbrace>Number LID_M, Agent Pa, Transaction\<rbrace> # evsStart)"   and "\<And>evsPIReq Transaction M C OrderDesc PurchAmt Chall_C LID_M. \<lbrakk>evsPIReq \<in> set_pur; P evsPIReq; Transaction = \<lbrace>Agent M, Agent C, Number OrderDesc, Number PurchAmt\<rbrace>; Nonce Chall_C \<notin> used evsPIReq; Chall_C \<notin> range CardSecret; Chall_C \<notin> range PANSecret; Notes C \<lbrace>Number LID_M, Transaction\<rbrace> \<in> set evsPIReq\<rbrakk> \<Longrightarrow> P (Says C M \<lbrace>Number LID_M, Nonce Chall_C\<rbrace> # evsPIReq)"   and "\<And>evsPIRes M LID_M Chall_C Transaction C OrderDesc PurchAmt Pa Chall_M XID. \<lbrakk>evsPIRes \<in> set_pur; P evsPIRes; Gets M \<lbrace>Number LID_M, Nonce Chall_C\<rbrace> \<in> set evsPIRes; Transaction = \<lbrace>Agent M, Agent C, Number OrderDesc, Number PurchAmt\<rbrace>; Notes M \<lbrace>Number LID_M, Agent Pa, Transaction\<rbrace> \<in> set evsPIRes; Nonce Chall_M \<notin> used evsPIRes; Chall_M \<notin> range CardSecret; Chall_M \<notin> range PANSecret; Number XID \<notin> used evsPIRes; XID \<notin> range CardSecret; XID \<notin> range PANSecret\<rbrakk> \<Longrightarrow> P (Says M C (sign (priSK M) \<lbrace>Number LID_M, Number XID, Nonce Chall_C, Nonce Chall_M, cert Pa (pubEK Pa) onlyEnc (priSK RCA)\<rbrace>) # evsPIRes)"   and "\<And>C k KC1 Transaction M HOD OIData LID_M PIHead EKj Chall_C Chall_M OrderDesc Pa PurchAmt XID evsPReqU. \<lbrakk>evsPReqU \<in> set_pur; P evsPReqU; C = Cardholder k; CardSecret k = 0; Key KC1 \<notin> used evsPReqU; KC1 \<in> symKeys; Transaction = \<lbrace>Agent M, Agent C, Number OrderDesc, Number PurchAmt\<rbrace>; HOD = Hash \<lbrace>Number OrderDesc, Number PurchAmt\<rbrace>; OIData = \<lbrace>Number LID_M, Number XID, Nonce Chall_C, HOD, Nonce Chall_M\<rbrace>; PIHead = \<lbrace>Number LID_M, Number XID, HOD, Number PurchAmt, Agent M\<rbrace>; Gets C (sign (priSK M) \<lbrace>Number LID_M, Number XID, Nonce Chall_C, Nonce Chall_M, cert Pa EKj onlyEnc (priSK RCA)\<rbrace>) \<in> set evsPReqU; Says C M \<lbrace>Number LID_M, Nonce Chall_C\<rbrace> \<in> set evsPReqU; Notes C \<lbrace>Number LID_M, Transaction\<rbrace> \<in> set evsPReqU\<rbrakk> \<Longrightarrow> P (Says C M \<lbrace>EXHcrypt KC1 EKj \<lbrace>PIHead, Hash OIData\<rbrace> (Pan (pan C)), OIData, Hash \<lbrace>PIHead, Pan (pan C)\<rbrace>\<rbrace> # Notes C \<lbrace>Key KC1, Agent M\<rbrace> # evsPReqU)"   and "\<And>C Chall_C Chall_M EKj HOD KC2 LID_M M OIData OIDualSigned OrderDesc Pa PANData PIData PIDualSigned PIHead PurchAmt Transaction XID evsPReqS k. \<lbrakk>evsPReqS \<in> set_pur; P evsPReqS; C = Cardholder k; CardSecret k \<noteq> 0; Key KC2 \<notin> used evsPReqS; KC2 \<in> symKeys; Transaction = \<lbrace>Agent M, Agent C, Number OrderDesc, Number PurchAmt\<rbrace>; HOD = Hash \<lbrace>Number OrderDesc, Number PurchAmt\<rbrace>; OIData = \<lbrace>Number LID_M, Number XID, Nonce Chall_C, HOD, Nonce Chall_M\<rbrace>; PIHead = \<lbrace>Number LID_M, Number XID, HOD, Number PurchAmt, Agent M, Hash \<lbrace>Number XID, Nonce (CardSecret k)\<rbrace>\<rbrace>; PANData = \<lbrace>Pan (pan C), Nonce (PANSecret k)\<rbrace>; PIData = \<lbrace>PIHead, PANData\<rbrace>; PIDualSigned = \<lbrace>sign (priSK C) \<lbrace>Hash PIData, Hash OIData\<rbrace>, EXcrypt KC2 EKj \<lbrace>PIHead, Hash OIData\<rbrace> PANData\<rbrace>; OIDualSigned = \<lbrace>OIData, Hash PIData\<rbrace>; Gets C (sign (priSK M) \<lbrace>Number LID_M, Number XID, Nonce Chall_C, Nonce Chall_M, cert Pa EKj onlyEnc (priSK RCA)\<rbrace>) \<in> set evsPReqS; Says C M \<lbrace>Number LID_M, Nonce Chall_C\<rbrace> \<in> set evsPReqS; Notes C \<lbrace>Number LID_M, Transaction\<rbrace> \<in> set evsPReqS\<rbrakk> \<Longrightarrow> P (Says C M \<lbrace>PIDualSigned, OIDualSigned\<rbrace> # Notes C \<lbrace>Key KC2, Agent M\<rbrace> # evsPReqS)"   and "\<And>evsAReq KM Transaction M C OrderDesc PurchAmt HOD OIData LID_M XID Chall_C Chall_M k P_I HPIData encPANData Pa EKj. \<lbrakk>evsAReq \<in> set_pur; P evsAReq; Key KM \<notin> used evsAReq; KM \<in> symKeys; Transaction = \<lbrace>Agent M, Agent C, Number OrderDesc, Number PurchAmt\<rbrace>; HOD = Hash \<lbrace>Number OrderDesc, Number PurchAmt\<rbrace>; OIData = \<lbrace>Number LID_M, Number XID, Nonce Chall_C, HOD, Nonce Chall_M\<rbrace>; CardSecret k \<noteq> 0 \<longrightarrow> P_I = \<lbrace>sign (priSK C) \<lbrace>HPIData, Hash OIData\<rbrace>, encPANData\<rbrace>; Gets M \<lbrace>P_I, OIData, HPIData\<rbrace> \<in> set evsAReq; Says M C (sign (priSK M) \<lbrace>Number LID_M, Number XID, Nonce Chall_C, Nonce Chall_M, cert Pa EKj onlyEnc (priSK RCA)\<rbrace>) \<in> set evsAReq; Notes M \<lbrace>Number LID_M, Agent Pa, Transaction\<rbrace> \<in> set evsAReq\<rbrakk> \<Longrightarrow> P (Says M Pa (EncB (priSK M) KM (pubEK Pa) \<lbrace>Number LID_M, Number XID, Hash OIData, HOD\<rbrace> P_I) # evsAReq)"   and "\<And>evsAResU C k M i KP KC1 KM PIHead LID_M XID HOD PurchAmt P_I EKj HOIData Pa. \<lbrakk>evsAResU \<in> set_pur; P evsAResU; C = Cardholder k; M = Merchant i; Key KP \<notin> used evsAResU; KP \<in> symKeys; CardSecret k = 0; KC1 \<in> symKeys; KM \<in> symKeys; PIHead = \<lbrace>Number LID_M, Number XID, HOD, Number PurchAmt, Agent M\<rbrace>; P_I = EXHcrypt KC1 EKj \<lbrace>PIHead, HOIData\<rbrace> (Pan (pan C)); Gets Pa (EncB (priSK M) KM (pubEK Pa) \<lbrace>Number LID_M, Number XID, HOIData, HOD\<rbrace> P_I) \<in> set evsAResU\<rbrakk> \<Longrightarrow> P (Says Pa M (EncB (priSK Pa) KP (pubEK M) \<lbrace>Number LID_M, Number XID, Number PurchAmt\<rbrace> authCode) # evsAResU)"   and "\<And>evsAResS C k KP KC2 KM P_I PIData HOIData Pa PIHead PANData LID_M XID HOD PurchAmt M. \<lbrakk>evsAResS \<in> set_pur; P evsAResS; C = Cardholder k; Key KP \<notin> used evsAResS; KP \<in> symKeys; CardSecret k \<noteq> 0; KC2 \<in> symKeys; KM \<in> symKeys; P_I = \<lbrace>sign (priSK C) \<lbrace>Hash PIData, HOIData\<rbrace>, EXcrypt KC2 (pubEK Pa) \<lbrace>PIHead, HOIData\<rbrace> PANData\<rbrace>; PANData = \<lbrace>Pan (pan C), Nonce (PANSecret k)\<rbrace>; PIData = \<lbrace>PIHead, PANData\<rbrace>; PIHead = \<lbrace>Number LID_M, Number XID, HOD, Number PurchAmt, Agent M, Hash \<lbrace>Number XID, Nonce (CardSecret k)\<rbrace>\<rbrace>; Gets Pa (EncB (priSK M) KM (pubEK Pa) \<lbrace>Number LID_M, Number XID, HOIData, HOD\<rbrace> P_I) \<in> set evsAResS\<rbrakk> \<Longrightarrow> P (Says Pa M (EncB (priSK Pa) KP (pubEK M) \<lbrace>Number LID_M, Number XID, Number PurchAmt\<rbrace> authCode) # evsAResS)"   and "\<And>evsPRes KP M i Transaction C OrderDesc PurchAmt Pa LID_M XID Chall_C KM OIData HOD P_I. \<lbrakk>evsPRes \<in> set_pur; P evsPRes; KP \<in> symKeys; M = Merchant i; Transaction = \<lbrace>Agent M, Agent C, Number OrderDesc, Number PurchAmt\<rbrace>; Gets M (EncB (priSK Pa) KP (pubEK M) \<lbrace>Number LID_M, Number XID, Number PurchAmt\<rbrace> authCode) \<in> set evsPRes; Gets M \<lbrace>Number LID_M, Nonce Chall_C\<rbrace> \<in> set evsPRes; Says M Pa (EncB (priSK M) KM (pubEK Pa) \<lbrace>Number LID_M, Number XID, Hash OIData, HOD\<rbrace> P_I) \<in> set evsPRes; Notes M \<lbrace>Number LID_M, Agent Pa, Transaction\<rbrace> \<in> set evsPRes\<rbrakk> \<Longrightarrow> P (Says M C (sign (priSK M) \<lbrace>Number LID_M, Number XID, Nonce Chall_C, Hash (Number PurchAmt)\<rbrace>) # evsPRes)" shows "P x"