cpsa-4.4.1: tst/wang-key-hash-tst.tst
(herald "Wang's Fair Exchange Protocol" (bound 10))
(comment "CPSA 4.3.0")
(comment "All input read from tst/wang-key-hash-tst.scm")
(comment "Strand count bounded at 10")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener m)
(non-orig (privk "encr" t))
(uniq-orig m k)
(comment "Experiment 1 to prove Lemma 4.1.")
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv m) (send m)))
(label 0)
(unrealized (1 0))
(preskeleton)
(origs (m (0 0)) (k (0 0)))
(comment "Not a skeleton"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener m)
(precedes ((0 0) (1 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv m) (send m)))
(label 1)
(parent 0)
(unrealized (1 0))
(origs (m (0 0)) (k (0 0)))
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener m)
(deflistener k)
(precedes ((0 0) (2 0)) ((2 1) (1 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (added-listener k) m (1 0) (enc m k))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv m) (send m)) ((recv k) (send k)))
(label 2)
(parent 1)
(unrealized (2 0))
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(deflistener k)
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 0)) ((2 2) (1 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (displaced 0 3 init1 3) k (2 0)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(traces ((recv m) (send m)) ((recv k) (send k))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(label 3)
(parent 2)
(realized)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener m)
(deflistener k)
(defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(precedes ((0 0) (3 0)) ((2 1) (1 0)) ((3 2) (2 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (added-strand ttp-rc1 3) k (2 0)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv m) (send m)) ((recv k) (send k))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat "sync-rc-req"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (send (cat k r))))
(label 4)
(parent 2)
(realized)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation generalization deleted (1 0))
(traces ((recv m) (send m))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(label 5)
(parent 3)
(realized)
(shape)
(maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs (m (1 0)) (k (1 0))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener m)
(defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(precedes ((0 0) (2 0)) ((2 2) (1 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation generalization deleted (2 0))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv m) (send m))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat "sync-rc-req"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (send (cat k r))))
(label 6)
(parent 4)
(realized)
(shape)
(maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs (m (0 0)) (k (0 0))))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener k)
(non-orig (privk "encr" t))
(uniq-orig m k)
(comment "Experiment 2 to prove Lemma 4.1.")
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv k) (send k)))
(label 7)
(unrealized (1 0))
(preskeleton)
(origs (m (0 0)) (k (0 0)))
(comment "Not a skeleton"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener k)
(precedes ((0 0) (1 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv k) (send k)))
(label 8)
(parent 7)
(unrealized (1 0))
(origs (m (0 0)) (k (0 0)))
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener k)
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (displaced 0 2 init1 3) k (1 0)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(traces ((recv k) (send k))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(label 9)
(parent 8)
(realized)
(shape)
(maps ((1 0) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs (m (1 0)) (k (1 0))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener k)
(defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(precedes ((0 0) (2 0)) ((2 2) (1 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (added-strand ttp-rc1 3) k (1 0)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv k) (send k))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat "sync-rc-req"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (send (cat k r))))
(label 10)
(parent 8)
(realized)
(shape)
(maps ((0 1) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs (m (0 0)) (k (0 0))))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" b))
(comment "First of three experiments to prove Lemma 4.2, clause 1.")
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(label 11)
(unrealized (0 1))
(origs)
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 1)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp1 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 1))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r)))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 12)
(parent 11)
(realized)
(shape)
(maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp3 2 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(precedes ((1 1) (0 1)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp3 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 1))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r)))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))))
(label 13)
(parent 11)
(realized)
(shape)
(maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" b))
(comment "Second of three experiments to prove Lemma 4.2, clause 1.")
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 14)
(unrealized (0 2))
(origs)
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 2)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp1 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 2))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 15)
(parent 14)
(realized)
(shape)
(maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp3 2 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(precedes ((1 1) (0 2)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp3 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 2))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))))
(label 16)
(parent 14)
(realized)
(shape)
(maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" b))
(comment "Third of three experiments to prove Lemma 4.2, clause 1.")
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 17)
(unrealized (0 1) (0 3))
(origs)
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 1)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp1 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 1))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 18)
(parent 17)
(realized)
(shape)
(maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp3 2 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(precedes ((1 1) (0 1)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp3 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 1))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))))
(label 19)
(parent 17)
(realized)
(shape)
(maps ((0) ((b b) (t t) (m m) (r r) (k k) (a a))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" a))
(comment "First of two experiments to prove Lemma 4.2, clause 2.")
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(label 20)
(unrealized (0 0))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r)))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 21)
(parent 20)
(realized)
(shape)
(maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" a))
(comment "Second of two experiments to prove Lemma 4.2, clause 2.")
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(label 22)
(unrealized (0 0))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r)))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 23)
(parent 22)
(realized)
(shape)
(maps ((0) ((a a) (t t) (m m) (r r) (k k) (b b))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (e1 e2 x mesg) (a t b name))
(defstrand resp3 4 (e1 e1) (e2 e2) (x x) (a a) (b b) (t t))
(non-orig (privk "sign" a))
(comment "Experiments to prove Lemma 4.2, clause 3.")
(traces
((recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(label 24)
(unrealized (0 0) (0 3))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 25)
(parent 24)
(unrealized (0 3))
(comment "4 in cohort - 4 not yet seen"))
(defskeleton wang
(vars (r r-0 text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 1) (0 3)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 26)
(parent 25)
(realized)
(shape)
(maps
((0)
((a a) (t t) (b b) (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 1) (0 3)))
(non-orig (privk "sign" a))
(operation encryption-test (displaced 1 2 init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 27)
(parent 25)
(realized)
(shape)
(maps
((0)
((a a) (t t) (b b) (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 2) (0 3)))
(non-orig (privk "sign" a))
(operation encryption-test (displaced 1 2 init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 28)
(parent 25)
(realized)
(shape)
(maps
((0)
((a a) (t t) (b b) (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))))))
(origs))
(defskeleton wang
(vars (r r-0 text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 2) (0 3)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 29)
(parent 25)
(realized)
(shape)
(maps
((0)
((a a) (t t) (b b) (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (y x mesg) (a b t name))
(deflistener
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))
(non-orig (privk "sign" t))
(comment "Experiments to prove Lemma 4.3, clause 1.")
(traces
((recv
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(label 30)
(unrealized (0 0))
(origs)
(comment "3 in cohort - 3 not yet seen"))
(defskeleton wang
(vars (y x mesg) (a b t name))
(deflistener
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))
(defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
(precedes ((1 2) (0 0)))
(non-orig (privk "sign" t))
(operation encryption-test (added-strand ttp-ab1 3)
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)) (0 0))
(traces
((recv
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t))))
((recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(label 31)
(parent 30)
(realized)
(shape)
(maps ((0) ((a a) (b b) (t t) (y y) (x x))))
(origs))
(defskeleton wang
(vars (y mesg) (r text) (a b t name) (k skey))
(deflistener
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))
(defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "sign" t))
(operation encryption-test (added-strand ttp-rc2 3)
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)) (0 0))
(traces
((recv
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t))))
((recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
k r (pubk "encr" t))
(enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(label 32)
(parent 30)
(realized)
(shape)
(maps ((0) ((a a) (b b) (t t) (y y) (x (enc "h" (cat "h" k))))))
(origs))
(defskeleton wang
(vars (y mesg) (r text) (a b t name) (k skey))
(deflistener
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))
(defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "sign" t))
(operation encryption-test (added-strand ttp-cf2 3)
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)) (0 0))
(traces
((recv
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t))))
((recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
k r (pubk "encr" t))
(enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(label 33)
(parent 30)
(realized)
(shape)
(maps ((0) ((a a) (b b) (t t) (y y) (x (enc "h" (cat "h" k))))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (y x mesg) (a b t name))
(defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
(non-orig (privk "encr" t) (privk "sign" a))
(comment "Experiment 1 to prove Lemma 4.3, clause 2.")
(traces
((recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(label 34)
(unrealized (0 0))
(origs)
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 0)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
(traces
((recv
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(send
(cat "sync-abrq"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 35)
(parent 34)
(realized)
(shape)
(maps
((0)
((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
(b b) (t t))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
(traces
((recv
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(send
(cat "sync-abrq"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 36)
(parent 34)
(realized)
(shape)
(maps
((0)
((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
(b b) (t t))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (y mesg) (r text) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
(non-orig (privk "encr" t) (privk "sign" a))
(comment "Experiment 2 to prove Lemma 4.3, clause 2.")
(traces
((recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
k r (pubk "encr" t))
(enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(label 37)
(unrealized (0 0) (0 1))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 38)
(parent 37)
(unrealized (0 1))
(comment "4 in cohort - 4 not yet seen"))
(defskeleton wang
(vars (r r-0 text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 1) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 39)
(parent 38)
(realized)
(shape)
(maps
((0)
((a a) (b b) (t t) (r r) (k k)
(y (enc "h" (cat "h" (enc m k)))))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 1) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (displaced 1 2 init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 40)
(parent 38)
(realized)
(shape)
(maps
((0)
((a a) (b b) (t t) (r r) (k k)
(y (enc "h" (cat "h" (enc m k)))))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 2) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (displaced 1 2 init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 41)
(parent 38)
(realized)
(shape)
(maps
((0)
((a a) (b b) (t t) (r r) (k k)
(y (enc "h" (cat "h" (enc m k)))))))
(origs))
(defskeleton wang
(vars (r r-0 text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 2) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 42)
(parent 38)
(realized)
(shape)
(maps
((0)
((a a) (b b) (t t) (r r) (k k)
(y (enc "h" (cat "h" (enc m k)))))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (y mesg) (r text) (a b t name) (k skey))
(defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
(non-orig (privk "encr" t) (privk "sign" a))
(comment "Experiment 3 to prove Lemma 4.3, clause 2.")
(traces
((recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
k r (pubk "encr" t))
(enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(label 43)
(unrealized (0 0) (0 1))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "cfrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 44)
(parent 43)
(unrealized (0 1))
(comment "4 in cohort - 4 not yet seen"))
(defskeleton wang
(vars (r r-0 text) (m data) (a b t name) (k skey))
(defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 1) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "cfrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 45)
(parent 44)
(realized)
(shape)
(maps
((0)
((a a) (b b) (t t) (r r) (k k)
(y (enc "h" (cat "h" (enc m k)))))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 1) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (displaced 1 2 init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "cfrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 46)
(parent 44)
(realized)
(shape)
(maps
((0)
((a a) (b b) (t t) (r r) (k k)
(y (enc "h" (cat "h" (enc m k)))))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 2) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (displaced 1 2 init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "cfrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 47)
(parent 44)
(realized)
(shape)
(maps
((0)
((a a) (b b) (t t) (r r) (k k)
(y (enc "h" (cat "h" (enc m k)))))))
(origs))
(defskeleton wang
(vars (r r-0 text) (m data) (a b t name) (k skey))
(defstrand ttp-cf2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 2) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "cfrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 48)
(parent 44)
(realized)
(shape)
(maps
((0)
((a a) (b b) (t t) (r r) (k k)
(y (enc "h" (cat "h" (enc m k)))))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "encr" t))
(uniq-orig m k)
(goals
(forall ((r text) (m data) (b t a name) (k skey) (z z-0 strd))
(implies
(and (p "init1" z 1) (p "" z-0 2) (p "init1" "r" z r)
(p "init1" "m" z m) (p "init1" "a" z a) (p "init1" "b" z b)
(p "init1" "t" z t) (p "init1" "k" z k) (p "" "x" z-0 m)
(non (privk "encr" t)) (uniq-at m z 0) (uniq-at k z 0))
(or (and (p "init1" z 3) (prec z 2 z-0 0))
(exists ((z-1 strd))
(and (p "ttp-rc1" z-1 3)
(p "ttp-rc1" "y" z-1 (enc "h" (cat "h" (enc m k))))
(p "ttp-rc1" "r" z-1 r) (p "ttp-rc1" "a" z-1 a)
(p "ttp-rc1" "b" z-1 b) (p "ttp-rc1" "t" z-1 t)
(p "ttp-rc1" "k" z-1 k) (prec z 0 z-1 0)
(prec z-1 2 z-0 0)))))))
(traces ((recv m) (send m))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 49)
(unrealized (0 0))
(preskeleton)
(origs (m (1 0)) (k (1 0)))
(comment "Not a skeleton"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(traces ((recv m) (send m))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 50)
(parent 49)
(unrealized (0 0))
(origs (m (1 0)) (k (1 0)))
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener k)
(precedes ((1 0) (2 0)) ((2 1) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (added-listener k) m (0 0) (enc m k))
(traces ((recv m) (send m))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv k) (send k)))
(label 51)
(parent 50)
(unrealized (2 0))
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(deflistener k)
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 0)) ((2 2) (1 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (displaced 1 3 init1 3) k (2 0)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(traces ((recv m) (send m)) ((recv k) (send k))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(label 52)
(parent 51)
(realized)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(deflistener k)
(defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(precedes ((1 0) (3 0)) ((2 1) (0 0)) ((3 2) (2 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (added-strand ttp-rc1 3) k (2 0)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(traces ((recv m) (send m))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))) ((recv k) (send k))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat "sync-rc-req"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (send (cat k r))))
(label 53)
(parent 51)
(realized)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation generalization deleted (1 0))
(traces ((recv m) (send m))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(label 54)
(parent 52)
(realized)
(shape)
(satisfies yes)
(maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs (m (1 0)) (k (1 0))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener m)
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(precedes ((1 0) (2 0)) ((2 2) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation generalization deleted (2 0))
(traces ((recv m) (send m))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat "sync-rc-req"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (send (cat k r))))
(label 55)
(parent 53)
(realized)
(shape)
(satisfies yes)
(maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs (m (1 0)) (k (1 0))))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener k)
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "encr" t))
(uniq-orig m k)
(goals
(forall ((r text) (m data) (b t a name) (k skey) (z z-0 strd))
(implies
(and (p "init1" z 1) (p "" z-0 2) (p "init1" "r" z r)
(p "init1" "m" z m) (p "init1" "a" z a) (p "init1" "b" z b)
(p "init1" "t" z t) (p "init1" "k" z k) (p "" "x" z-0 k)
(non (privk "encr" t)) (uniq-at m z 0) (uniq-at k z 0))
(or (and (p "init1" z 3) (prec z 2 z-0 0))
(exists ((z-1 strd))
(and (p "ttp-rc1" z-1 3)
(p "ttp-rc1" "y" z-1 (enc "h" (cat "h" (enc m k))))
(p "ttp-rc1" "r" z-1 r) (p "ttp-rc1" "a" z-1 a)
(p "ttp-rc1" "b" z-1 b) (p "ttp-rc1" "t" z-1 t)
(p "ttp-rc1" "k" z-1 k) (prec z 0 z-1 0)
(prec z-1 2 z-0 0)))))))
(traces ((recv k) (send k))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 56)
(unrealized (0 0))
(preskeleton)
(origs (m (1 0)) (k (1 0)))
(comment "Not a skeleton"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener k)
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(traces ((recv k) (send k))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 57)
(parent 56)
(unrealized (0 0))
(origs (m (1 0)) (k (1 0)))
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener k)
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (displaced 1 2 init1 3) k (0 0)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(traces ((recv k) (send k))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(label 58)
(parent 57)
(realized)
(shape)
(satisfies yes)
(maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs (m (1 0)) (k (1 0))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(deflistener k)
(defstrand init1 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand ttp-rc1 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(precedes ((1 0) (2 0)) ((2 2) (0 0)))
(non-orig (privk "encr" t))
(uniq-orig m k)
(operation nonce-test (added-strand ttp-rc1 3) k (0 0)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(traces ((recv k) (send k))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat "sync-rc-req"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (send (cat k r))))
(label 59)
(parent 57)
(realized)
(shape)
(satisfies yes)
(maps ((0 1) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs (m (1 0)) (k (1 0))))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" b))
(goals
(forall ((r text) (m data) (b t a name) (k skey) (z strd))
(implies
(and (p "init1" z 3) (p "init1" "r" z r) (p "init1" "m" z m)
(p "init1" "a" z a) (p "init1" "b" z b) (p "init1" "t" z t)
(p "init1" "k" z k) (non (privk "sign" b)))
(or
(exists ((z-0 strd))
(and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
(p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
(p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
(p "resp1" "k" z-0 k) (prec z-0 1 z 1)))
(exists ((z-0 strd))
(and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
(p "resp3" "e2" z-0
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(p "resp3" "x" z-0 (enc "h" (cat "h" k)))
(p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
(p "resp3" "t" z-0 t) (prec z-0 1 z 1)))))))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(label 60)
(unrealized (0 1))
(origs)
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 1)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp1 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 1))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r)))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 61)
(parent 60)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp3 2 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(precedes ((1 1) (0 1)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp3 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 1))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r)))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))))
(label 62)
(parent 60)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" b))
(goals
(forall ((r text) (m data) (b t a name) (k skey) (z strd))
(implies
(and (p "init3" z 3) (p "init3" "r" z r) (p "init3" "m" z m)
(p "init3" "a" z a) (p "init3" "b" z b) (p "init3" "t" z t)
(p "init3" "k" z k) (non (privk "sign" b)))
(or
(exists ((z-0 strd))
(and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
(p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
(p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
(p "resp1" "k" z-0 k) (prec z-0 1 z 2)))
(exists ((z-0 strd))
(and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
(p "resp3" "e2" z-0
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(p "resp3" "x" z-0 (enc "h" (cat "h" k)))
(p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
(p "resp3" "t" z-0 t) (prec z-0 1 z 2)))))))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 63)
(unrealized (0 2))
(origs)
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 2)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp1 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 2))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 64)
(parent 63)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init3 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp3 2 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(precedes ((1 1) (0 2)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp3 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 2))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))))
(label 65)
(parent 63)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" b))
(goals
(forall ((r text) (m data) (b t a name) (k skey) (z strd))
(implies
(and (p "init5" z 4) (p "init5" "r" z r) (p "init5" "m" z m)
(p "init5" "a" z a) (p "init5" "b" z b) (p "init5" "t" z t)
(p "init5" "k" z k) (non (privk "sign" b)))
(or
(exists ((z-0 strd))
(and (p "resp1" z-0 2) (p "resp1" "r" z-0 r)
(p "resp1" "m" z-0 m) (p "resp1" "a" z-0 a)
(p "resp1" "b" z-0 b) (p "resp1" "t" z-0 t)
(p "resp1" "k" z-0 k) (prec z-0 1 z 1)))
(exists ((z-0 strd))
(and (p "resp3" z-0 2) (p "resp3" "e1" z-0 (enc m k))
(p "resp3" "e2" z-0
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(p "resp3" "x" z-0 (enc "h" (cat "h" k)))
(p "resp3" "a" z-0 a) (p "resp3" "b" z-0 b)
(p "resp3" "t" z-0 t) (prec z-0 1 z 1)))))))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 66)
(unrealized (0 1) (0 3))
(origs)
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp1 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 1)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp1 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 1))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(label 67)
(parent 66)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs))
(defskeleton wang
(vars (r text) (m data) (b t a name) (k skey))
(defstrand init5 4 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand resp3 2 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(precedes ((1 1) (0 1)))
(non-orig (privk "sign" b))
(operation encryption-test (added-strand resp3 2)
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)) (0 1))
(traces
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))))
(label 68)
(parent 66)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((r r) (m m) (b b) (t t) (a a) (k k))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" a))
(goals
(forall ((r text) (m data) (a t b name) (k skey) (z strd))
(implies
(and (p "resp1" z 3) (p "resp1" "r" z r) (p "resp1" "m" z m)
(p "resp1" "a" z a) (p "resp1" "b" z b) (p "resp1" "t" z t)
(p "resp1" "k" z k) (non (privk "sign" a)))
(exists ((z-0 strd))
(and (p "init5" z-0 1) (p "init5" "r" z-0 r)
(p "init5" "m" z-0 m) (p "init5" "a" z-0 a)
(p "init5" "b" z-0 b) (p "init5" "t" z-0 t)
(p "init5" "k" z-0 k) (prec z-0 0 z 0))))))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(label 69)
(unrealized (0 0))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp1 3 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r)))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 70)
(parent 69)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((r r) (m m) (a a) (t t) (b b) (k k))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
(non-orig (privk "sign" a))
(goals
(forall ((r text) (m data) (a t b name) (k skey) (z strd))
(implies
(and (p "resp2" z 4) (p "resp2" "r" z r) (p "resp2" "m" z m)
(p "resp2" "a" z a) (p "resp2" "b" z b) (p "resp2" "t" z t)
(p "resp2" "k" z k) (non (privk "sign" a)))
(exists ((z-0 strd))
(and (p "init5" z-0 1) (p "init5" "r" z-0 r)
(p "init5" "m" z-0 m) (p "init5" "a" z-0 a)
(p "init5" "b" z-0 b) (p "init5" "t" z-0 t)
(p "init5" "k" z-0 k) (prec z-0 0 z 0))))))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(label 71)
(unrealized (0 0))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp2 4 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r)))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 72)
(parent 71)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((r r) (m m) (a a) (t t) (b b) (k k))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (e1 e2 x mesg) (a t b name))
(defstrand resp3 4 (e1 e1) (e2 e2) (x x) (a a) (b b) (t t))
(non-orig (privk "sign" a))
(goals
(forall ((e1 e2 x mesg) (a t b name) (z strd))
(implies
(and (p "resp3" z 4) (p "resp3" "e1" z e1) (p "resp3" "e2" z e2)
(p "resp3" "x" z x) (p "resp3" "a" z a) (p "resp3" "b" z b)
(p "resp3" "t" z t) (non (privk "sign" a)))
(or
(exists ((r text) (m data) (k skey) (z-0 strd))
(and (= e1 (enc m k))
(= e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(= x (enc "h" (cat "h" k))) (p "init3" z-0 2)
(p "resp3" "e1" z (enc m k))
(p "resp3" "e2" z
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(p "resp3" "x" z (enc "h" (cat "h" k)))
(p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
(p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
(p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
(prec z-0 0 z 0) (prec z-0 1 z 3)))
(exists ((r r-0 text) (m data) (k skey) (z-0 z-1 strd))
(and (= e1 (enc m k))
(= e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(= x (enc "h" (cat "h" k))) (p "init5" z-0 1)
(p "init3" z-1 2) (p "resp3" "e1" z (enc m k))
(p "resp3" "e2" z
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(p "resp3" "x" z (enc "h" (cat "h" k)))
(p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
(p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
(p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
(p "init3" "r" z-1 r-0) (p "init3" "m" z-1 m)
(p "init3" "a" z-1 a) (p "init3" "b" z-1 b)
(p "init3" "t" z-1 t) (p "init3" "k" z-1 k)
(prec z-0 0 z 0) (prec z-1 1 z 3)))
(exists ((r text) (m data) (k skey) (z-0 strd))
(and (= e1 (enc m k))
(= e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(= x (enc "h" (cat "h" k))) (p "init5" z-0 3)
(p "resp3" "e1" z (enc m k))
(p "resp3" "e2" z
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(p "resp3" "x" z (enc "h" (cat "h" k)))
(p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
(p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
(p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
(prec z-0 0 z 0) (prec z-0 2 z 3)))
(exists ((r r-0 text) (m data) (k skey) (z-0 z-1 strd))
(and (= e1 (enc m k))
(= e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(= x (enc "h" (cat "h" k))) (p "init5" z-0 1)
(p "init5" z-1 3) (p "resp3" "e1" z (enc m k))
(p "resp3" "e2" z
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(p "resp3" "x" z (enc "h" (cat "h" k)))
(p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
(p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
(p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
(p "init5" "r" z-1 r-0) (p "init5" "m" z-1 m)
(p "init5" "a" z-1 a) (p "init5" "b" z-1 b)
(p "init5" "t" z-1 t) (p "init5" "k" z-1 k)
(prec z-0 0 z 0) (prec z-1 2 z 3)))))))
(traces
((recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(label 73)
(unrealized (0 0) (0 3))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 74)
(parent 73)
(unrealized (0 3))
(comment "4 in cohort - 4 not yet seen"))
(defskeleton wang
(vars (r r-0 text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 1) (0 3)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 75)
(parent 74)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 1) (0 3)))
(non-orig (privk "sign" a))
(operation encryption-test (displaced 1 2 init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 76)
(parent 74)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 2) (0 3)))
(non-orig (privk "sign" a))
(operation encryption-test (displaced 1 2 init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 77)
(parent 74)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
(origs))
(defskeleton wang
(vars (r r-0 text) (m data) (a t b name) (k skey))
(defstrand resp3 4 (e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 2) (0 3)))
(non-orig (privk "sign" a))
(operation encryption-test (added-strand init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 3))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 78)
(parent 74)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((e1 (enc m k))
(e2
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t)))
(x (enc "h" (cat "h" k))) (a a) (t t) (b b))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (y x mesg) (a b t name))
(deflistener
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))
(non-orig (privk "sign" t))
(goals
(forall ((y x mesg) (a b t name) (z strd))
(implies
(and (p "" z 2)
(p "" "x" z
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t))) (non (privk "sign" t)))
(or
(exists ((z-0 strd))
(and (p "ttp-ab1" z-0 3) (p "ttp-ab1" "y" z-0 y)
(p "ttp-ab1" "x" z-0 x) (p "ttp-ab1" "a" z-0 a)
(p "ttp-ab1" "b" z-0 b) (p "ttp-ab1" "t" z-0 t)
(prec z-0 2 z 0)))
(exists ((r text) (k skey) (z-0 strd))
(and (= x (enc "h" (cat "h" k))) (p "ttp-rc2" z-0 3)
(p "" "x" z
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k))
(privk "sign" a)) (privk "sign" t)))
(p "ttp-rc2" "y" z-0 y) (p "ttp-rc2" "r" z-0 r)
(p "ttp-rc2" "a" z-0 a) (p "ttp-rc2" "b" z-0 b)
(p "ttp-rc2" "t" z-0 t) (p "ttp-rc2" "k" z-0 k)
(prec z-0 2 z 0)))
(exists ((r text) (k skey) (z-0 strd))
(and (= x (enc "h" (cat "h" k))) (p "ttp-cf2" z-0 3)
(p "" "x" z
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k))
(privk "sign" a)) (privk "sign" t)))
(p "ttp-cf2" "y" z-0 y) (p "ttp-cf2" "r" z-0 r)
(p "ttp-cf2" "a" z-0 a) (p "ttp-cf2" "b" z-0 b)
(p "ttp-cf2" "t" z-0 t) (p "ttp-cf2" "k" z-0 k)
(prec z-0 2 z 0)))))))
(traces
((recv
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(label 79)
(unrealized (0 0))
(origs)
(comment "3 in cohort - 3 not yet seen"))
(defskeleton wang
(vars (y x mesg) (a b t name))
(deflistener
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))
(defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
(precedes ((1 2) (0 0)))
(non-orig (privk "sign" t))
(operation encryption-test (added-strand ttp-ab1 3)
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)) (0 0))
(traces
((recv
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t))))
((recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(label 80)
(parent 79)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((y y) (x x) (a a) (b b) (t t))))
(origs))
(defskeleton wang
(vars (y mesg) (r text) (a b t name) (k skey))
(deflistener
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))
(defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "sign" t))
(operation encryption-test (added-strand ttp-rc2 3)
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)) (0 0))
(traces
((recv
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t))))
((recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
k r (pubk "encr" t))
(enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(label 81)
(parent 79)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((y y) (x (enc "h" (cat "h" k))) (a a) (b b) (t t))))
(origs))
(defskeleton wang
(vars (y mesg) (r text) (a b t name) (k skey))
(deflistener
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))
(defstrand ttp-cf2 3 (y y) (r r) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "sign" t))
(operation encryption-test (added-strand ttp-cf2 3)
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)) (0 0))
(traces
((recv
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t))))
((recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
k r (pubk "encr" t))
(enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(label 82)
(parent 79)
(realized)
(shape)
(satisfies yes)
(maps ((0) ((y y) (x (enc "h" (cat "h" k))) (a a) (b b) (t t))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (y x mesg) (a b t name))
(defstrand ttp-ab1 3 (y y) (x x) (a a) (b b) (t t))
(non-orig (privk "encr" t) (privk "sign" a))
(goals
(forall ((y x mesg) (a b t name) (z strd))
(implies
(and (p "ttp-ab1" z 3) (p "ttp-ab1" "y" z y)
(p "ttp-ab1" "x" z x) (p "ttp-ab1" "a" z a)
(p "ttp-ab1" "b" z b) (p "ttp-ab1" "t" z t)
(non (privk "encr" t)) (non (privk "sign" a)))
(or
(exists ((r text) (m data) (k skey) (z-0 strd))
(and (= y (enc "h" (cat "h" (enc m k))))
(= x (enc "h" (cat "h" k))) (p "init3" z-0 2)
(p "ttp-ab1" "y" z (enc "h" (cat "h" (enc m k))))
(p "ttp-ab1" "x" z (enc "h" (cat "h" k)))
(p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
(p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
(p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
(prec z-0 1 z 0)))
(exists ((r text) (m data) (k skey) (z-0 strd))
(and (= y (enc "h" (cat "h" (enc m k))))
(= x (enc "h" (cat "h" k))) (p "init5" z-0 3)
(p "ttp-ab1" "y" z (enc "h" (cat "h" (enc m k))))
(p "ttp-ab1" "x" z (enc "h" (cat "h" k)))
(p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
(p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
(p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
(prec z-0 2 z 0)))))))
(traces
((recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(label 83)
(unrealized (0 0))
(origs)
(comment "2 in cohort - 2 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 1) (0 0)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
(traces
((recv
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(send
(cat "sync-abrq"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 84)
(parent 83)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
(b b) (t t))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-ab1 3 (y (enc "h" (cat "h" (enc m k))))
(x (enc "h" (cat "h" k))) (a a) (b b) (t t))
(defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 2) (0 0)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 0))
(traces
((recv
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(send
(cat "sync-abrq"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 85)
(parent 83)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((y (enc "h" (cat "h" (enc m k)))) (x (enc "h" (cat "h" k))) (a a)
(b b) (t t))))
(origs))
(comment "Nothing left to do")
(defprotocol wang basic
(defrole init1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (send (cat k r))))
(defrole init2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init3
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole init4
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t)))))
(defrole init5
(vars (a b t name) (m data) (r text) (k skey))
(trace
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))))
(defrole resp1
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))) (recv (cat k r))))
(defrole resp2
(vars (a b t name) (m data) (r text) (k skey))
(trace
(recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))) (enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(send
(cat
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))) (recv (cat k r))))
(defrole resp3
(vars (a b t name) (e1 e2 x mesg))
(trace
(recv
(cat (cat a b t (enc "h" (cat "h" e1)) x) e1 e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))))
(send
(cat (cat a b t (enc "h" (cat "h" e1)) x) e2
(enc "eootag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t (enc "h" (cat "h" e1)) x)) e2
(privk "sign" b))
(enc "rcrq" (cat a b t (enc "h" (cat "h" e1)) x) e2
(privk "sign" b))))
(recv
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" e1)) x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab1
(vars (a b t name) (y x mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(send (cat "sync-abrq" (enc "abrq" a b t y x (privk "sign" a))))
(send
(enc "abcf" (enc "abrq" a b t y x (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-ab2
(vars (a b t name) (y x e mesg))
(trace (recv (enc "abrq" a b t y x (privk "sign" a)))
(recv
(cat "sync-abrq"
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b))))
(send
(enc "eortag" (enc "h" (cat "h" a b t y x)) e
(privk "sign" b)))))
(defrole ttp-rc1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-rc-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)))) (send (cat k r))))
(defrole ttp-rc2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrole ttp-cf1
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(cat "sync-cf-req" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(send
(enc (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b)) (privk "sign" t)))))
(defrole ttp-cf2
(vars (a b t name) (r text) (k skey) (y mesg))
(trace
(recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t))
(enc "eootag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "cfrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-cf-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(defrule cakeRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (leads-to z0 i0 z1 i1)
(leads-to z0 i0 z2 i2) (prec z1 i1 z2 i2))
(false))))
(defrule no-interruption
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (leads-to z0 i0 z2 i2) (trans z1 i1)
(same-locn z0 i0 z1 i1) (prec z0 i0 z1 i1) (prec z1 i1 z2 i2))
(false))))
(defrule neqRl_mesg
(forall ((x mesg)) (implies (fact neq x x) (false))))
(defrule neqRl_strd
(forall ((x strd)) (implies (fact neq x x) (false))))
(defrule neqRl_indx
(forall ((x indx)) (implies (fact neq x x) (false))))
(defrule scissorsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (leads-to z0 i0 z2 i2))
(and (= z1 z2) (= i1 i2)))))
(defrule shearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (trans z2 i2)
(leads-to z0 i0 z1 i1) (same-locn z0 i0 z2 i2)
(prec z0 i0 z2 i2))
(or (and (= z1 z2) (= i1 i2)) (prec z1 i1 z2 i2)))))
(defrule invShearsRule
(forall ((z0 z1 z2 strd) (i0 i1 i2 indx))
(implies
(and (trans z0 i0) (trans z1 i1) (same-locn z0 i0 z1 i1)
(leads-to z1 i1 z2 i2) (prec z0 i0 z2 i2))
(or (and (= z0 z1) (= i0 i1)) (prec z0 i0 z1 i1))))))
(defskeleton wang
(vars (y mesg) (r text) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y y) (r r) (a a) (b b) (t t) (k k))
(non-orig (privk "encr" t) (privk "sign" a))
(goals
(forall ((y mesg) (r text) (a b t name) (k skey) (z strd))
(implies
(and (p "ttp-rc2" z 3) (p "ttp-rc2" "y" z y)
(p "ttp-rc2" "r" z r) (p "ttp-rc2" "a" z a)
(p "ttp-rc2" "b" z b) (p "ttp-rc2" "t" z t)
(p "ttp-rc2" "k" z k) (non (privk "encr" t))
(non (privk "sign" a)))
(or
(exists ((m data) (z-0 strd))
(and (= y (enc "h" (cat "h" (enc m k)))) (p "init3" z-0 2)
(p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
(p "init3" "r" z-0 r) (p "init3" "m" z-0 m)
(p "init3" "a" z-0 a) (p "init3" "b" z-0 b)
(p "init3" "t" z-0 t) (p "init3" "k" z-0 k)
(prec z-0 0 z 0) (prec z-0 1 z 1)))
(exists ((r-0 text) (m data) (z-0 z-1 strd))
(and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 1)
(p "init3" z-1 2)
(p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
(p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
(p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
(p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
(p "init3" "r" z-1 r-0) (p "init3" "m" z-1 m)
(p "init3" "a" z-1 a) (p "init3" "b" z-1 b)
(p "init3" "t" z-1 t) (p "init3" "k" z-1 k)
(prec z-0 0 z 0) (prec z-1 1 z 1)))
(exists ((m data) (z-0 strd))
(and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 3)
(p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
(p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
(p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
(p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
(prec z-0 0 z 0) (prec z-0 2 z 1)))
(exists ((r-0 text) (m data) (z-0 z-1 strd))
(and (= y (enc "h" (cat "h" (enc m k)))) (p "init5" z-0 1)
(p "init5" z-1 3)
(p "ttp-rc2" "y" z (enc "h" (cat "h" (enc m k))))
(p "init5" "r" z-0 r) (p "init5" "m" z-0 m)
(p "init5" "a" z-0 a) (p "init5" "b" z-0 b)
(p "init5" "t" z-0 t) (p "init5" "k" z-0 k)
(p "init5" "r" z-1 r-0) (p "init5" "m" z-1 m)
(p "init5" "a" z-1 a) (p "init5" "b" z-1 b)
(p "init5" "t" z-1 t) (p "init5" "k" z-1 k)
(prec z-0 0 z 0) (prec z-1 2 z 1)))))))
(traces
((recv
(cat (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
k r (pubk "encr" t))
(enc "eootag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" a))
(enc "eortag" (enc "h" (cat "h" a b t y (enc "h" (cat "h" k))))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))
(enc "rcrq" (cat a b t y (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h" (cat "h" a b t y (enc "h" (cat "h" k)))) k r
(pubk "encr" t)) (privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t y (enc "h" (cat "h" k)) (privk "sign" a))
(privk "sign" t)))))
(label 86)
(unrealized (0 0) (0 1))
(origs)
(comment "1 in cohort - 1 not yet seen"))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init5 1)
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)) (0 0))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))))
(label 87)
(parent 86)
(unrealized (0 1))
(comment "4 in cohort - 4 not yet seen"))
(defskeleton wang
(vars (r r-0 text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init3 2 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 1) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 88)
(parent 87)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
(k k))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init3 2 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 1) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (displaced 1 2 init3 2)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 89)
(parent 87)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
(k k))))
(origs))
(defskeleton wang
(vars (r text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 3 (r r) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((1 2) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (displaced 1 2 init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 90)
(parent 87)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
(k k))))
(origs))
(defskeleton wang
(vars (r r-0 text) (m data) (a b t name) (k skey))
(defstrand ttp-rc2 3 (y (enc "h" (cat "h" (enc m k)))) (r r) (a a)
(b b) (t t) (k k))
(defstrand init5 1 (r r) (m m) (a a) (b b) (t t) (k k))
(defstrand init5 3 (r r-0) (m m) (a a) (b b) (t t) (k k))
(precedes ((1 0) (0 0)) ((2 2) (0 1)))
(non-orig (privk "encr" t) (privk "sign" a))
(operation encryption-test (added-strand init5 3)
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (0 1))
(traces
((recv
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a))
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))
(enc "rcrq"
(cat a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" b))))
(recv
(cat "sync-rc-req"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a))))
(send
(enc "abcf"
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)) (privk "sign" t))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r (pubk "encr" t))
(privk "sign" a)))))
((send
(cat
(cat a b t (enc "h" (cat "h" (enc m k))) (enc "h" (cat "h" k)))
(enc m k)
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(enc "eootag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" a))))
(recv
(enc "eortag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k))))
(enc "keytag"
(enc "h"
(cat "h" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)))) k r-0 (pubk "encr" t))
(privk "sign" b)))
(send
(enc "abrq" a b t (enc "h" (cat "h" (enc m k)))
(enc "h" (cat "h" k)) (privk "sign" a)))))
(label 91)
(parent 87)
(realized)
(shape)
(satisfies yes)
(maps
((0)
((y (enc "h" (cat "h" (enc m k)))) (r r) (a a) (b b) (t t)
(k k))))
(origs))
(comment "Nothing left to do")