packages feed

cpsa-3.6.8: tst/nh-ca.tst

(herald nhca (algebra diffie-hellman) (bound 20))

(comment "CPSA 3.6.7")
(comment "All input read from tst/nh-ca.scm")
(comment "Strand count bounded at 20")

(defprotocol nhca diffie-hellman
  (defrole init
    (vars (xi rndx) (xr expt) (a b ca name) (n text) (hint mesg))
    (trace (send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    (non-orig (privk a) (privk ca))
    (uniq-gen xi))
  (defrole resp
    (vars (xr rndx) (xi expt) (a b ca name) (n text))
    (trace (send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    (non-orig (privk b) (privk ca))
    (uniq-gen xr))
  (defrole ca
    (vars (subject ca name) (x expt))
    (trace (recv (enc "reg" (hash "public" x) subject (privk subject)))
      (send (enc (hash "public" x) subject (privk ca))))
    (non-orig (privk subject)))
  (comment A diffie-hellman exchange which uses a certificate authority
    to certify lonh-term NH values))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (comment Full initiator POV No need to make extra assumptions)
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint))))))
  (label 0)
  (unrealized (0 1) (0 3))
  (origs)
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 1)
  (parent 0)
  (unrealized (0 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a ca name) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test (displaced 2 1 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi) hint
          (enc (hash "public" xi) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi) hint))
          (enc "check" n (hash "key" (hash "share" xi xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 2)
  (parent 1)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr x))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (0 3)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi x) hint))
          (enc "check" n (hash "key" (hash "share" x xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 3)
  (parent 1)
  (unrealized (0 3) (2 0))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a ca name) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi) hint))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi) hint))
    (enc n hint (hash "key" (hash "share" xi xi) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi) hint
          (enc (hash "public" xi) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi) hint))
          (enc "check" n (hash "key" (hash "share" xi xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi) hint))
      (send (hash "key" (hash "share" xi xi) hint))))
  (label 4)
  (parent 2)
  (unrealized (2 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a ca name) (xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xr)
  (operation encryption-test (displaced 3 0 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (send
        (cat (hash "public" xr) (enc (hash "public" xr) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr) hint)))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca)))))
  (label 5)
  (parent 3)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 1 (b b) (xr xr))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (0 3)) ((3 0) (2 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr) b (privk b)) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))))
  (label 6)
  (parent 3)
  (unrealized (0 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a ca name) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi) hint))
  (deflistener (cat "key" (hash "share" xi xi) hint))
  (precedes ((0 0) (1 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 1) (2 0)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi) hint))
    (hash "key" (hash "share" xi xi) hint) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi) hint
          (enc (hash "public" xi) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi) hint))
          (enc "check" n (hash "key" (hash "share" xi xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi) hint))
      (send (hash "key" (hash "share" xi xi) hint)))
    ((recv (cat "key" (hash "share" xi xi) hint))
      (send (cat "key" (hash "share" xi xi) hint))))
  (label 7)
  (parent 4)
  (unrealized (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a ca name) (xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xr xr) hint))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
    ((2 1) (0 3)) ((3 1) (0 3)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xr)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr xr) hint))
    (enc n hint (hash "key" (hash "share" xr xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (send
        (cat (hash "public" xr) (enc (hash "public" xr) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr) hint)))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (hash "key" (hash "share" xr xr) hint))
      (send (hash "key" (hash "share" xr xr) hint))))
  (label 8)
  (parent 5)
  (unrealized (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (a ca a-0 b ca-0 name) (xi xr rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca-0) (xr xr) (xi xi))
  (precedes ((0 0) (1 0)) ((0 0) (3 2)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 3) (0 3)))
  (non-orig (privk a) (privk ca) (privk b) (privk ca-0))
  (uniq-gen xi xr)
  (operation encryption-test (displaced 3 4 resp 4)
    (enc n (hash "hint" (hash "share" xr xi))
      (hash "key" (hash "share" xi xr)
        (hash "hint" (hash "share" xr xi)))) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca-0)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca-0))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))))
  (label 9)
  (parent 6)
  (unrealized (3 1) (3 2))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 1 (b b) (xr xr))
  (deflistener (hash "key" (hash "share" xi xr) hint))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((4 1) (0 3)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr) hint))
    (enc n hint (hash "key" (hash "share" xi xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b))))
    ((recv (hash "key" (hash "share" xi xr) hint))
      (send (hash "key" (hash "share" xi xr) hint))))
  (label 10)
  (parent 6)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a ca name) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi) hint))
  (deflistener (cat "key" (hash "share" xi xi) hint))
  (deflistener (cat "share" xi xi))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 1) (2 0)) ((4 1) (3 0)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test (added-listener (cat "share" xi xi))
    (hash "share" xi xi) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi) hint
          (enc (hash "public" xi) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi) hint))
          (enc "check" n (hash "key" (hash "share" xi xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi) hint))
      (send (hash "key" (hash "share" xi xi) hint)))
    ((recv (cat "key" (hash "share" xi xi) hint))
      (send (cat "key" (hash "share" xi xi) hint)))
    ((recv (cat "share" xi xi)) (send (cat "share" xi xi))))
  (label 11)
  (parent 7)
  (unrealized (4 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a ca name) (xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xr xr) hint))
  (deflistener (cat "key" (hash "share" xr xr) hint))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1))
    ((2 1) (0 3)) ((3 1) (0 3)) ((4 1) (3 0)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xr)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr xr) hint))
    (hash "key" (hash "share" xr xr) hint) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (send
        (cat (hash "public" xr) (enc (hash "public" xr) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr) hint)))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (hash "key" (hash "share" xr xr) hint))
      (send (hash "key" (hash "share" xr xr) hint)))
    ((recv (cat "key" (hash "share" xr xr) hint))
      (send (cat "key" (hash "share" xr xr) hint))))
  (label 12)
  (parent 8)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (a ca a-0 b name) (xi xr rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca) (xr xr) (xi xi))
  (precedes ((0 0) (1 0)) ((0 0) (3 2)) ((1 1) (0 1)) ((2 1) (3 1))
    ((3 0) (2 0)) ((3 3) (0 3)))
  (non-orig (privk a) (privk ca) (privk b))
  (uniq-gen xi xr)
  (operation encryption-test (displaced 4 2 ca 2)
    (enc (hash "public" xr) b (privk ca-0)) (3 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))))
  (label 13)
  (parent 9)
  (unrealized (3 2))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (n text) (a ca a-0 b ca-0 name) (xi xr rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca-0) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (3 2)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 3) (0 3)) ((4 1) (3 1)))
  (non-orig (privk a) (privk ca) (privk b) (privk ca-0))
  (uniq-gen xi xr)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr) b (privk ca-0)) (3 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca-0)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca-0))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0)))))
  (label 14)
  (parent 9)
  (unrealized (3 2))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 1 (b b) (xr xr))
  (deflistener (hash "key" (hash "share" xi xr) hint))
  (deflistener (cat "key" (hash "share" xi xr) hint))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (5 0)) ((4 1) (0 3)) ((5 1) (4 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr) hint))
    (hash "key" (hash "share" xi xr) hint) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b))))
    ((recv (hash "key" (hash "share" xi xr) hint))
      (send (hash "key" (hash "share" xi xr) hint)))
    ((recv (cat "key" (hash "share" xi xr) hint))
      (send (cat "key" (hash "share" xi xr) hint))))
  (label 15)
  (parent 10)
  (unrealized (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a ca name) (xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xr xr) hint))
  (deflistener (cat "key" (hash "share" xr xr) hint))
  (deflistener (cat "share" xr xr))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1))
    ((2 1) (0 3)) ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xr)
  (operation encryption-test (added-listener (cat "share" xr xr))
    (hash "share" xr xr) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (send
        (cat (hash "public" xr) (enc (hash "public" xr) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr) hint)))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (hash "key" (hash "share" xr xr) hint))
      (send (hash "key" (hash "share" xr xr) hint)))
    ((recv (cat "key" (hash "share" xr xr) hint))
      (send (cat "key" (hash "share" xr xr) hint)))
    ((recv (cat "share" xr xr)) (send (cat "share" xr xr))))
  (label 16)
  (parent 12)
  (unrealized (5 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (n text) (a ca b name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 2)) ((2 1) (3 1))
    ((3 0) (2 0)) ((3 3) (0 3)))
  (non-orig (privk a) (privk ca) (privk b))
  (uniq-gen xr xi)
  (operation encryption-test (displaced 4 1 ca 2)
    (enc (hash "public" xi) a-0 (privk ca)) (3 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))))
  (label 17)
  (parent 13)
  (unrealized)
  (shape)
  (maps
    ((0)
      ((xi xi) (xr xr) (a a) (b b) (ca ca) (n n)
        (hint (hash "hint" (hash "share" xr xi))))))
  (origs))

(defskeleton nhca
  (vars (n text) (a ca a-0 b name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a-0) (ca ca) (x xi))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (3 1))
    ((3 0) (2 0)) ((3 3) (0 3)) ((4 1) (3 2)))
  (non-orig (privk a) (privk ca) (privk a-0) (privk b))
  (uniq-gen xr xi)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a-0 (privk ca)) (3 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a-0 (privk a-0)))
      (send (enc (hash "public" xi) a-0 (privk ca)))))
  (label 18)
  (parent 13)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (a ca b name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 2)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 3) (0 3)) ((4 1) (3 1)))
  (non-orig (privk a) (privk ca) (privk b))
  (uniq-gen xr xi)
  (operation encryption-test (displaced 5 1 ca 2)
    (enc (hash "public" xi) a-0 (privk ca-0)) (3 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 19)
  (parent 14)
  (seen 17)
  (unrealized)
  (comment "1 in cohort - 0 not yet seen"))

(defskeleton nhca
  (vars (n text) (a ca a-0 b ca-0 name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca-0) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a-0) (ca ca-0) (x xi))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 3) (0 3)) ((4 1) (3 1))
    ((5 1) (3 2)))
  (non-orig (privk a) (privk ca) (privk a-0) (privk b) (privk ca-0))
  (uniq-gen xr xi)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a-0 (privk ca-0)) (3 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca-0)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca-0))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a-0 (privk a-0)))
      (send (enc (hash "public" xi) a-0 (privk ca-0)))))
  (label 20)
  (parent 14)
  (unrealized (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 1 (b b) (xr xr))
  (deflistener (hash "key" (hash "share" xi xr) hint))
  (deflistener (cat "key" (hash "share" xi xr) hint))
  (deflistener (cat "share" xi xr))
  (precedes ((0 0) (1 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (6 0)) ((4 1) (0 3)) ((5 1) (4 0))
    ((6 1) (5 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (operation encryption-test (added-listener (cat "share" xi xr))
    (hash "share" xi xr) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b))))
    ((recv (hash "key" (hash "share" xi xr) hint))
      (send (hash "key" (hash "share" xi xr) hint)))
    ((recv (cat "key" (hash "share" xi xr) hint))
      (send (cat "key" (hash "share" xi xr) hint)))
    ((recv (cat "share" xi xr)) (send (cat "share" xi xr))))
  (label 21)
  (parent 15)
  (unrealized (6 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (n text) (a ca b name) (xr xr-0 rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b b) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (3 1))
    ((3 0) (2 0)) ((3 3) (0 3)) ((4 1) (3 2)))
  (non-orig (privk a) (privk ca) (privk b))
  (uniq-gen xr xr-0)
  (operation encryption-test (displaced 5 0 resp 1)
    (enc "reg" (hash "public" xr-0) a-0 (privk a-0)) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 22)
  (parent 18)
  (unrealized)
  (shape)
  (maps
    ((0)
      ((xi xr-0) (xr xr) (a a) (b b) (ca ca) (n n)
        (hint (hash "hint" (hash "share" xr xr-0))))))
  (origs))

(defskeleton nhca
  (vars (n text) (a ca b ca-0 name) (xr xr-0 rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b b) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a) (b b) (ca ca-0) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 3) (0 3)) ((4 1) (3 1))
    ((5 1) (3 2)))
  (non-orig (privk a) (privk ca) (privk b) (privk ca-0))
  (uniq-gen xr xr-0)
  (operation encryption-test (displaced 6 0 resp 1)
    (enc "reg" (hash "public" xr-0) a-0 (privk a-0)) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca-0)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0)))))
  (label 23)
  (parent 20)
  (unrealized)
  (shape)
  (maps
    ((0)
      ((xi xr-0) (xr xr) (a a) (b b) (ca ca) (n n)
        (hint (hash "hint" (hash "share" xr xr-0))))))
  (origs))

(comment "Nothing left to do")

(defprotocol nhca diffie-hellman
  (defrole init
    (vars (xi rndx) (xr expt) (a b ca name) (n text) (hint mesg))
    (trace (send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    (non-orig (privk a) (privk ca))
    (uniq-gen xi))
  (defrole resp
    (vars (xr rndx) (xi expt) (a b ca name) (n text))
    (trace (send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    (non-orig (privk b) (privk ca))
    (uniq-gen xr))
  (defrole ca
    (vars (subject ca name) (x expt))
    (trace (recv (enc "reg" (hash "public" x) subject (privk subject)))
      (send (enc (hash "public" x) subject (privk ca))))
    (non-orig (privk subject)))
  (comment A diffie-hellman exchange which uses a certificate authority
    to certify lonh-term NH values))

(defskeleton nhca
  (vars (n text) (a b ca name) (xr rndx) (xi expt))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (comment Full responder point of view with freshly chosen n)
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi)))))))
  (label 24)
  (unrealized (0 1) (0 2) (0 4))
  (origs (n (0 3)))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (a b ca name) (xi expt) (xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr) b (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 25)
  (parent 24)
  (unrealized (0 2) (0 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (displaced 2 1 ca 2)
    (enc (hash "public" x) a (privk ca)) (0 2))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 26)
  (parent 25)
  (unrealized (0 4))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (a b ca name) (xr rndx) (x expt))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi x))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x x))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (0 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) a (privk ca)) (0 2))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" x) (enc (hash "public" x) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr x))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr x))
            (hash "key" (hash "share" xr x)
              (hash "hint" (hash "share" xr x))))
          (enc n (hash "hint" (hash "share" xr x))
            (hash "key" (hash "share" x xr)
              (hash "hint" (hash "share" xr x))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr x)
            (hash "hint" (hash "share" xr x))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" x) a (privk a)))
      (send (enc (hash "public" x) a (privk ca)))))
  (label 27)
  (parent 25)
  (unrealized (0 4) (2 0))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 4)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr))))
    (enc "check" n
      (hash "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr)))) (0 4))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr))))))
  (label 28)
  (parent 26)
  (unrealized (2 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 2)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (displaced 3 0 resp 1)
    (enc "reg" (hash "public" xr-0) a (privk a)) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 29)
  (parent 27)
  (unrealized (0 4))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (a b ca name) (xr xr-0 rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand resp 1 (b a) (xr xr-0))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (0 2)) ((3 0) (2 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) a (privk a)) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))))
  (label 30)
  (parent 27)
  (unrealized (0 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (deflistener
    (cat "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr))))
  (precedes ((0 0) (1 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 4))
    ((3 1) (2 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr))))
    (hash "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr)))
    (2 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv
       (cat "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (cat "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr))))))
  (label 31)
  (parent 28)
  (unrealized (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 1) (0 4)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr))))
    (enc "check" n
      (hash "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr)))) (0 4))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr))))))
  (label 32)
  (parent 29)
  (unrealized (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca a b-0 ca-0 name) (xr xi rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi) (xr xr))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 4) (0 4)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (displaced 3 4 init 5)
    (enc "check" n
      (hash "key" (hash "share" xr xi)
        (hash "hint" (hash "share" xr xi)))) (0 4))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))))))
  (label 33)
  (parent 30)
  (unrealized (3 1) (3 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (n text) (a b ca name) (xr xr-0 rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand resp 1 (b a) (xr xr-0))
  (deflistener
    (hash "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (4 0)) ((4 1) (0 4)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr xr-0)
        (hash "hint" (hash "share" xr xr-0))))
    (enc "check" n
      (hash "key" (hash "share" xr xr-0)
        (hash "hint" (hash "share" xr xr-0)))) (0 4))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (hash "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0))))))
  (label 34)
  (parent 30)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (deflistener
    (cat "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr))))
  (deflistener (cat "share" xr xr))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (0 4))
    ((3 1) (2 0)) ((4 1) (3 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr xr))
    (hash "share" xr xr) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv
       (cat "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (cat "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv (cat "share" xr xr)) (send (cat "share" xr xr))))
  (label 35)
  (parent 31)
  (unrealized (4 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (deflistener
    (cat "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr))))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 1) (0 4)) ((4 1) (3 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr))))
    (hash "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr)))
    (3 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv
       (cat "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (cat "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr))))))
  (label 36)
  (parent 32)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca a b-0 name) (xr xi rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca) (xi xi) (xr xr))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((2 1) (3 1)) ((3 0) (2 0)) ((3 4) (0 4)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (displaced 4 2 ca 2)
    (enc (hash "public" xi) a (privk ca-0)) (3 1))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))))))
  (label 37)
  (parent 33)
  (unrealized (3 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca a b-0 ca-0 name) (xr xi rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 4) (0 4)) ((4 1) (3 1)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a (privk ca-0)) (3 1))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0)))))
  (label 38)
  (parent 33)
  (unrealized (3 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (n text) (a b ca name) (xr xr-0 rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand resp 1 (b a) (xr xr-0))
  (deflistener
    (hash "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (deflistener
    (cat "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (5 0)) ((4 1) (0 4)) ((5 1) (4 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr xr-0)
        (hash "hint" (hash "share" xr xr-0))))
    (hash "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (hash "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0)))))
    ((recv
       (cat "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (cat "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0))))))
  (label 39)
  (parent 34)
  (unrealized (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (deflistener
    (cat "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr))))
  (deflistener (cat "share" xr xr))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 1) (0 4)) ((4 1) (3 0)) ((5 1) (4 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr xr))
    (hash "share" xr xr) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n (hash "hint" (hash "share" xr xr))
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv
       (cat "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (cat "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv (cat "share" xr xr)) (send (cat "share" xr xr))))
  (label 40)
  (parent 36)
  (unrealized (5 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (n text) (b ca a name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((2 1) (3 1)) ((3 0) (2 0)) ((3 4) (0 4)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 4 1 ca 2)
    (enc (hash "public" xr) b-0 (privk ca)) (3 3))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))))))
  (label 41)
  (parent 37)
  (unrealized)
  (shape)
  (maps ((0) ((n n) (xr xr) (xi xi) (a a) (b b) (ca ca))))
  (origs (n (0 3))))

(defskeleton nhca
  (vars (n text) (b ca a b-0 name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b-0) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((0 3) (3 3)) ((1 1) (0 1))
    ((2 1) (0 2)) ((2 1) (3 1)) ((3 0) (2 0)) ((3 4) (0 4))
    ((4 1) (3 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk b-0))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr) b-0 (privk ca)) (3 3))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b-0 (privk b-0)))
      (send (enc (hash "public" xr) b-0 (privk ca)))))
  (label 42)
  (parent 37)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca a name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 4) (0 4)) ((4 1) (3 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 5 1 ca 2)
    (enc (hash "public" xr) b-0 (privk ca-0)) (3 3))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 43)
  (parent 38)
  (unrealized)
  (shape)
  (maps ((0) ((n n) (xr xr) (xi xi) (a a) (b b) (ca ca))))
  (origs (n (0 3))))

(defskeleton nhca
  (vars (n text) (b ca a b-0 ca-0 name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b-0) (ca ca-0) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((0 3) (3 3)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 0) (2 0)) ((3 0) (4 0)) ((3 4) (0 4))
    ((4 1) (3 1)) ((5 1) (3 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk b-0) (privk ca-0))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr) b-0 (privk ca-0)) (3 3))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b-0 (privk b-0)))
      (send (enc (hash "public" xr) b-0 (privk ca-0)))))
  (label 44)
  (parent 38)
  (unrealized (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (a b ca name) (xr xr-0 rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand resp 1 (b a) (xr xr-0))
  (deflistener
    (hash "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (deflistener
    (cat "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (deflistener (cat "share" xr xr-0))
  (precedes ((0 0) (1 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (6 0)) ((4 1) (0 4)) ((5 1) (4 0))
    ((6 1) (5 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr xr-0))
    (hash "share" xr xr-0) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (hash "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0)))))
    ((recv
       (cat "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (cat "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0)))))
    ((recv (cat "share" xr xr-0)) (send (cat "share" xr xr-0))))
  (label 45)
  (parent 39)
  (unrealized (6 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (n text) (b ca a name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((0 3) (3 3)) ((1 1) (0 1))
    ((2 1) (0 2)) ((2 1) (3 1)) ((3 0) (2 0)) ((3 4) (0 4))
    ((4 1) (3 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 5 0 resp 1)
    (enc "reg" (hash "public" xr) b-0 (privk b-0)) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 46)
  (parent 42)
  (seen 41)
  (unrealized)
  (comment "1 in cohort - 0 not yet seen"))

(defskeleton nhca
  (vars (n text) (b ca a ca-0 name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((0 3) (3 3)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 0) (2 0)) ((3 0) (4 0)) ((3 4) (0 4))
    ((4 1) (3 1)) ((5 1) (3 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 6 0 resp 1)
    (enc "reg" (hash "public" xr) b-0 (privk b-0)) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0)))))
  (label 47)
  (parent 44)
  (unrealized)
  (shape)
  (maps ((0) ((n n) (xr xr) (xi xi) (a a) (b b) (ca ca))))
  (origs (n (0 3))))

(comment "Nothing left to do")

(defprotocol nhca diffie-hellman
  (defrole init
    (vars (xi rndx) (xr expt) (a b ca name) (n text) (hint mesg))
    (trace (send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    (non-orig (privk a) (privk ca))
    (uniq-gen xi))
  (defrole resp
    (vars (xr rndx) (xi expt) (a b ca name) (n text))
    (trace (send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    (non-orig (privk b) (privk ca))
    (uniq-gen xr))
  (defrole ca
    (vars (subject ca name) (x expt))
    (trace (recv (enc "reg" (hash "public" x) subject (privk subject)))
      (send (enc (hash "public" x) subject (privk ca))))
    (non-orig (privk subject)))
  (comment A diffie-hellman exchange which uses a certificate authority
    to certify lonh-term NH values))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx)
    (xr-0 xi-0 expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi-0))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (uniq-orig n)
  (comment point of view in which init and resp each complete and they
    agree on the relevant parameters)
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0)))))))
  (label 48)
  (unrealized (0 1) (0 3) (1 1) (1 2) (1 4))
  (preskeleton)
  (origs (n (1 3)))
  (comment "Not a skeleton"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx)
    (xr-0 xi-0 expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi-0))
  (precedes ((1 3) (0 3)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (uniq-orig n)
  (comment point of view in which init and resp each complete and they
    agree on the relevant parameters)
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0)))))))
  (label 49)
  (parent 48)
  (unrealized (0 1) (0 3) (1 1) (1 2) (1 4))
  (origs (n (1 3)))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr xi-0 expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr-0) b (privk ca)) (1 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca)))))
  (label 50)
  (parent 49)
  (unrealized (0 1) (0 3) (1 2) (1 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 3 2 ca 2)
    (enc (hash "public" x) a (privk ca)) (1 2))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca)))))
  (label 51)
  (parent 50)
  (unrealized (0 1) (0 3) (1 4))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi x))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x x))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) a (privk ca)) (1 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" x) (enc (hash "public" x) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 x))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 x))
            (hash "key" (hash "share" xr-0 x)
              (hash "hint" (hash "share" xr-0 x))))
          (enc n (hash "hint" (hash "share" xr-0 x))
            (hash "key" (hash "share" x xr-0)
              (hash "hint" (hash "share" xr-0 x))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 x)
            (hash "hint" (hash "share" xr-0 x))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" x) a (privk a)))
      (send (enc (hash "public" x) a (privk ca)))))
  (label 52)
  (parent 50)
  (unrealized (0 1) (0 3) (1 4) (3 0))
  (comment "3 in cohort - 3 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 4)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0))))
    (enc "check" n
      (hash "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0))))))
  (label 53)
  (parent 51)
  (unrealized (0 1) (0 3) (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xr-1)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (precedes ((0 0) (3 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test (displaced 4 0 resp 1)
    (enc "reg" (hash "public" xr-2) a (privk a)) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))
      (recv (enc (hash "public" xr-1) a (privk ca)))
      (send
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xr-1 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-1 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr-1) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca)))))
  (label 54)
  (parent 52)
  (unrealized (0 1) (0 3) (1 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 4 1 resp 1)
    (enc "reg" (hash "public" xr-1) a (privk a)) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca)))))
  (label 55)
  (parent 52)
  (unrealized (0 1) (0 3) (1 4))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (defstrand resp 1 (b a) (xr xr-1))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-1) a (privk a)) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))))
  (label 56)
  (parent 52)
  (unrealized (0 1) (0 3) (1 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (precedes ((1 0) (2 0)) ((1 0) (4 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 4)) ((4 1) (3 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0))))
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (cat "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0))))))
  (label 57)
  (parent 53)
  (unrealized (0 1) (0 3) (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (3 0)) ((0 4) (1 4)) ((1 0) (2 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (1 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 4 0 init 5)
    (enc "check" n
      (hash "key" (hash "share" xr-0 xi)
        (hash "hint" (hash "share" xr-0 xi)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 58)
  (parent 54)
  (unrealized (0 1))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xr-1)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (precedes ((0 0) (3 0)) ((0 0) (4 0)) ((1 0) (2 0)) ((1 0) (4 0))
    ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1))))
    (enc "check" n
      (hash "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))
      (recv (enc (hash "public" xr-1) a (privk ca)))
      (send
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xr-1 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-1 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr-1) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1))))))
  (label 59)
  (parent 54)
  (unrealized (0 1) (0 3) (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 0) (4 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0))))
    (enc "check" n
      (hash "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0))))))
  (label 60)
  (parent 55)
  (unrealized (0 1) (0 3) (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a b-0 ca-0 name) (xi rndx) (xr expt)
    (xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi-0) (xr xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 4) (1 4)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 4 5 init 5)
    (enc "check" n
      (hash "key" (hash "share" xr-0 xi-0)
        (hash "hint" (hash "share" xr-0 xi-0)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca-0))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))))
  (label 61)
  (parent 56)
  (unrealized (0 1) (0 3) (4 1) (4 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (defstrand resp 1 (b a) (xr xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((5 1) (1 4)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1))))
    (enc "check" n
      (hash "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-1) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1))))))
  (label 62)
  (parent 56)
  (unrealized (0 1) (0 3) (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 4)) ((4 1) (3 0)) ((5 1) (4 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (cat "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 63)
  (parent 57)
  (unrealized (0 1) (0 3) (5 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (n text) (a b ca name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (3 0)) ((0 4) (1 4)) ((1 0) (2 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (0 1)) ((3 1) (1 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (displaced 4 3 ca 2)
    (enc (hash "public" xi) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 64)
  (parent 58)
  (unrealized)
  (shape)
  (maps
    ((0 1)
      ((a a) (b b) (ca ca) (xi xi) (xr xr) (n n) (xr-0 xr)
        (hint (hash "hint" (hash "share" xr xi))) (xi-0 xi))))
  (origs (n (1 3))))

(defskeleton nhca
  (vars (n text) (a b ca name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (3 0)) ((0 0) (4 0)) ((0 4) (1 4)) ((1 0) (2 0))
    ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (0 1)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 65)
  (parent 58)
  (unrealized)
  (shape)
  (maps
    ((0 1)
      ((a a) (b b) (ca ca) (xi xi) (xr xr) (n n) (xr-0 xr)
        (hint (hash "hint" (hash "share" xr xi))) (xi-0 xi))))
  (origs (n (1 3))))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xr-1)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (precedes ((0 0) (3 0)) ((0 0) (5 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4))
    ((5 1) (4 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1))))
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))
      (recv (enc (hash "public" xr-1) a (privk ca)))
      (send
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xr-1 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-1 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr-1) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (cat "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1))))))
  (label 66)
  (parent 59)
  (unrealized (0 1) (0 3) (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4)) ((5 1) (4 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0))))
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (cat "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0))))))
  (label 67)
  (parent 60)
  (unrealized (0 1) (0 3) (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a b-0 name) (xi rndx) (xr expt)
    (xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca) (xi xi-0) (xr xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 5 3 ca 2)
    (enc (hash "public" xi-0) a (privk ca-0)) (4 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))))
  (label 68)
  (parent 61)
  (unrealized (0 1) (0 3) (4 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a b-0 ca-0 name) (xi rndx) (xr expt)
    (xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca-0)) (4 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca-0))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0)))))
  (label 69)
  (parent 61)
  (unrealized (0 1) (0 3) (4 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (defstrand resp 1 (b a) (xr xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (precedes ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (6 0)) ((5 1) (1 4))
    ((6 1) (5 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1))))
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-1) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (cat "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1))))))
  (label 70)
  (parent 62)
  (unrealized (0 1) (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xr-1)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener (cat "share" xr-0 xr-1))
  (precedes ((0 0) (3 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4))
    ((5 1) (4 0)) ((6 1) (5 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-1))
    (hash "share" xr-0 xr-1) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))
      (recv (enc (hash "public" xr-1) a (privk ca)))
      (send
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xr-1 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-1 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr-1) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (cat "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv (cat "share" xr-0 xr-1)) (send (cat "share" xr-0 xr-1))))
  (label 71)
  (parent 66)
  (unrealized (0 1) (0 3) (6 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4)) ((5 1) (4 0))
    ((6 1) (5 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n (hash "hint" (hash "share" xr-0 xr-0))
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (cat "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 72)
  (parent 67)
  (unrealized (0 1) (0 3) (6 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b) (ca ca) (xi xi-0) (xr xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 5 2 ca 2)
    (enc (hash "public" xr-0) b-0 (privk ca)) (4 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))))
  (label 73)
  (parent 68)
  (unrealized (0 1) (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a b-0 name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject b-0) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk b-0))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr-0) b-0 (privk ca)) (4 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) b-0 (privk b-0)))
      (send (enc (hash "public" xr-0) b-0 (privk ca)))))
  (label 74)
  (parent 68)
  (unrealized (0 1) (0 3) (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b) (ca ca) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 6 2 ca 2)
    (enc (hash "public" xr-0) b-0 (privk ca-0)) (4 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 75)
  (parent 69)
  (unrealized (0 1) (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a b-0 ca-0 name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject b-0) (ca ca-0) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk b-0) (privk ca-0))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr-0) b-0 (privk ca-0)) (4 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca-0))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) b-0 (privk b-0)))
      (send (enc (hash "public" xr-0) b-0 (privk ca-0)))))
  (label 76)
  (parent 69)
  (unrealized (0 1) (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (defstrand resp 1 (b a) (xr xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener (cat "share" xr-0 xr-1))
  (precedes ((1 0) (2 0)) ((1 0) (7 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (7 0)) ((5 1) (1 4))
    ((6 1) (5 0)) ((7 1) (6 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-1))
    (hash "share" xr-0 xr-1) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n (hash "hint" (hash "share" xr-0 xr-1))
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-1) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (cat "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv (cat "share" xr-0 xr-1)) (send (cat "share" xr-0 xr-1))))
  (label 77)
  (parent 70)
  (unrealized (0 1) (0 3) (7 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xr expt)
    (xi xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi)
            (hash "hint" (hash "share" xr-0 xi))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 78)
  (parent 73)
  (unrealized (0 3))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b) (ca ca) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 6 1 resp 1)
    (enc "reg" (hash "public" xr-0) b-0 (privk b-0)) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca)))))
  (label 79)
  (parent 74)
  (unrealized (0 1) (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xr expt)
    (xi xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi)
            (hash "hint" (hash "share" xr-0 xi))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 80)
  (parent 75)
  (unrealized (0 3))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b) (ca ca-0) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 1 resp 1)
    (enc "reg" (hash "public" xr-0) b-0 (privk b-0)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr-0 xi-0))
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca-0)))))
  (label 81)
  (parent 76)
  (unrealized (0 1) (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 6 2 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 82)
  (parent 78)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 6 3 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 83)
  (parent 78)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 6 5 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 84)
  (parent 78)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr x))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 x) hint))
          (enc "check" n (hash "key" (hash "share" x xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 85)
  (parent 78)
  (unrealized (0 3) (6 0))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xr expt)
    (xi xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi)
            (hash "hint" (hash "share" xr-0 xi))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 86)
  (parent 79)
  (unrealized (0 3))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 7 2 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 87)
  (parent 80)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 3 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 88)
  (parent 80)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 6 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 89)
  (parent 80)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr x))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 x) hint))
          (enc "check" n (hash "key" (hash "share" x xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 90)
  (parent 80)
  (unrealized (0 3) (7 0))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xr expt)
    (xi xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi)
            (hash "hint" (hash "share" xr-0 xi))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr-0 xi))
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 91)
  (parent 81)
  (unrealized (0 3))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 92)
  (parent 82)
  (unrealized (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (6 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi-0) hint))
    (enc n hint (hash "key" (hash "share" xi xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint))))
  (label 93)
  (parent 83)
  (unrealized (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xi-0) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint))))
  (label 94)
  (parent 84)
  (unrealized (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 0 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 95)
  (parent 85)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 7 1 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 96)
  (parent 85)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 0) (6 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 4 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 97)
  (parent 85)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)) ((7 0) (6 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))))
  (label 98)
  (parent 85)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 7 2 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 99)
  (parent 86)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 3 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 100)
  (parent 86)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 6 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 101)
  (parent 86)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr x))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 x) hint))
          (enc "check" n (hash "key" (hash "share" x xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 102)
  (parent 86)
  (unrealized (0 3) (7 0))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 103)
  (parent 87)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (7 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi-0) hint))
    (enc n hint (hash "key" (hash "share" xi xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint))))
  (label 104)
  (parent 88)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xi-0) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint))))
  (label 105)
  (parent 89)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 0 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 106)
  (parent 90)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (7 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 8 1 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 107)
  (parent 90)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 0) (7 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 4 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 108)
  (parent 90)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 0) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))))
  (label 109)
  (parent 90)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 8 2 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 110)
  (parent 91)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 3 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 111)
  (parent 91)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 7 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 112)
  (parent 91)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 rndx)
    (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr x))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 x) hint))
          (enc "check" n (hash "key" (hash "share" x xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 113)
  (parent 91)
  (unrealized (0 3) (8 0))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (6 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 114)
  (parent 92)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (7 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (6 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi-0) hint))
    (hash "key" (hash "share" xi xi-0) hint) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint))))
  (label 115)
  (parent 93)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 1) (6 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xi-0) hint))
    (hash "key" (hash "share" xi-0 xi-0) hint) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint))))
  (label 116)
  (parent 94)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr-0 xr-0) hint))
    (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint))))
  (label 117)
  (parent 95)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (7 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 118)
  (parent 96)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (6 0)) ((4 0) (7 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr-0) hint))
    (enc n hint (hash "key" (hash "share" xi xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint))))
  (label 119)
  (parent 97)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 0) (6 0)) ((7 0) (8 0)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr-0) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint))))
  (label 120)
  (parent 98)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (7 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 121)
  (parent 99)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (7 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi-0) hint))
    (enc n hint (hash "key" (hash "share" xi xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint))))
  (label 122)
  (parent 100)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xi-0) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint))))
  (label 123)
  (parent 101)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 0 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 124)
  (parent 102)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 0) (7 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 8 1 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 125)
  (parent 102)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (7 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 4 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 126)
  (parent 102)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 0) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))))
  (label 127)
  (parent 102)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (8 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 128)
  (parent 103)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (8 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi-0) hint))
    (hash "key" (hash "share" xi xi-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint))))
  (label 129)
  (parent 104)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xi-0) hint))
    (hash "key" (hash "share" xi-0 xi-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint))))
  (label 130)
  (parent 105)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr-0 xr-0) hint))
    (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint))))
  (label 131)
  (parent 106)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 132)
  (parent 107)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (7 0)) ((4 0) (8 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr-0) hint))
    (enc n hint (hash "key" (hash "share" xi xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint))))
  (label 133)
  (parent 108)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (9 0)) ((9 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr-0) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint))))
  (label 134)
  (parent 109)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 135)
  (parent 110)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (8 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi-0) hint))
    (enc n hint (hash "key" (hash "share" xi xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint))))
  (label 136)
  (parent 111)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xi-0) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint))))
  (label 137)
  (parent 112)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 9 0 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 138)
  (parent 113)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 0) (8 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 9 1 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 139)
  (parent 113)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (8 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 9 4 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca-0)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 140)
  (parent 113)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)) ((8 1) (0 3)) ((9 0) (8 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))))
  (label 141)
  (parent 113)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (8 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (6 0)) ((8 1) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 142)
  (parent 114)
  (unrealized (0 3) (8 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "share" xi xi-0))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (8 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (6 0)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xi-0))
    (hash "share" xi xi-0) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "share" xi xi-0)) (send (cat "share" xi xi-0))))
  (label 143)
  (parent 115)
  (unrealized (0 3) (8 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "share" xi-0 xi-0))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 1) (6 0)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xi-0))
    (hash "share" xi-0 xi-0) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "share" xi-0 xi-0)) (send (cat "share" xi-0 xi-0))))
  (label 144)
  (parent 116)
  (unrealized (0 3) (8 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr-0 xr-0) hint))
    (hash "key" (hash "share" xr-0 xr-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint))))
  (label 145)
  (parent 117)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 146)
  (parent 118)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (6 0)) ((4 0) (8 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr-0) hint))
    (hash "key" (hash "share" xi xr-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint))))
  (label 147)
  (parent 119)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 0) (6 0)) ((7 0) (9 0)) ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr-0) hint))
    (hash "key" (hash "share" xi-0 xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint))))
  (label 148)
  (parent 120)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 149)
  (parent 121)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (8 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi-0) hint))
    (hash "key" (hash "share" xi xi-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint))))
  (label 150)
  (parent 122)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xi-0) hint))
    (hash "key" (hash "share" xi-0 xi-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint))))
  (label 151)
  (parent 123)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0))
    ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr-0 xr-0) hint))
    (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint))))
  (label 152)
  (parent 124)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (7 0)) ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 153)
  (parent 125)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (7 0)) ((4 0) (8 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr-0) hint))
    (enc n hint (hash "key" (hash "share" xi xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint))))
  (label 154)
  (parent 126)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (9 0))
    ((9 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr-0) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint))))
  (label 155)
  (parent 127)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (9 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 156)
  (parent 128)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "share" xi xi-0))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (9 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xi-0))
    (hash "share" xi xi-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "share" xi xi-0)) (send (cat "share" xi xi-0))))
  (label 157)
  (parent 129)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "share" xi-0 xi-0))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xi-0))
    (hash "share" xi-0 xi-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "share" xi-0 xi-0)) (send (cat "share" xi-0 xi-0))))
  (label 158)
  (parent 130)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr-0 xr-0) hint))
    (hash "key" (hash "share" xr-0 xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint))))
  (label 159)
  (parent 131)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 160)
  (parent 132)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (7 0)) ((4 0) (9 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr-0) hint))
    (hash "key" (hash "share" xi xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint))))
  (label 161)
  (parent 133)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (10 0)) ((9 1) (0 3))
    ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr-0) hint))
    (hash "key" (hash "share" xi-0 xr-0) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint))))
  (label 162)
  (parent 134)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 163)
  (parent 135)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (9 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi-0) hint))
    (hash "key" (hash "share" xi xi-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint))))
  (label 164)
  (parent 136)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xi-0) hint))
    (hash "key" (hash "share" xi-0 xi-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint))))
  (label 165)
  (parent 137)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((0 0) (9 0)) ((1 0) (2 0))
    ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr-0 xr-0) hint))
    (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint))))
  (label 166)
  (parent 138)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 167)
  (parent 139)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (8 0)) ((4 0) (9 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr-0) hint))
    (enc n hint (hash "key" (hash "share" xi xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca-0)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint))))
  (label 168)
  (parent 140)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 0) (8 0))
    ((9 0) (10 0)) ((10 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr-0) hint))
    (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint))))
  (label 169)
  (parent 141)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 170)
  (parent 145)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (5 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0))
    ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 171)
  (parent 146)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "share" xi xr-0))
  (precedes ((0 0) (5 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (6 0)) ((4 0) (9 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xr-0))
    (hash "share" xi xr-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "share" xi xr-0)) (send (cat "share" xi xr-0))))
  (label 172)
  (parent 147)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "share" xi-0 xr-0))
  (precedes ((0 0) (5 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 0) (6 0)) ((7 0) (10 0)) ((8 1) (0 3)) ((9 1) (8 0))
    ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr-0))
    (hash "share" xi-0 xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "share" xi-0 xr-0)) (send (cat "share" xi-0 xr-0))))
  (label 173)
  (parent 148)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0))
    ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 174)
  (parent 149)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "share" xi xi-0))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (9 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xi-0))
    (hash "share" xi xi-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "share" xi xi-0)) (send (cat "share" xi xi-0))))
  (label 175)
  (parent 150)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "share" xi-0 xi-0))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xi-0))
    (hash "share" xi-0 xi-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "share" xi-0 xi-0)) (send (cat "share" xi-0 xi-0))))
  (label 176)
  (parent 151)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0))
    ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr-0 xr-0) hint))
    (hash "key" (hash "share" xr-0 xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint))))
  (label 177)
  (parent 152)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (7 0)) ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 178)
  (parent 153)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (7 0)) ((4 0) (9 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr-0) hint))
    (hash "key" (hash "share" xi xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint))))
  (label 179)
  (parent 154)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (10 0))
    ((9 1) (0 3)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr-0) hint))
    (hash "key" (hash "share" xi-0 xr-0) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint))))
  (label 180)
  (parent 155)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)) ((9 1) (8 0))
    ((10 1) (9 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 181)
  (parent 159)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 0) (10 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 182)
  (parent 160)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "share" xi xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (7 0)) ((4 0) (10 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xr-0))
    (hash "share" xi xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "share" xi xr-0)) (send (cat "share" xi xr-0))))
  (label 183)
  (parent 161)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "share" xi-0 xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (11 0)) ((9 1) (0 3))
    ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr-0))
    (hash "share" xi-0 xr-0) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "share" xi-0 xr-0)) (send (cat "share" xi-0 xr-0))))
  (label 184)
  (parent 162)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (10 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 185)
  (parent 163)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "share" xi xi-0))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (10 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xi-0))
    (hash "share" xi xi-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi-0))
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "share" xi xi-0)) (send (cat "share" xi xi-0))))
  (label 186)
  (parent 164)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "share" xi-0 xi-0))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 1) (8 0))
    ((10 1) (9 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xi-0))
    (hash "share" xi-0 xi-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "share" xi-0 xi-0)) (send (cat "share" xi-0 xi-0))))
  (label 187)
  (parent 165)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((0 0) (10 0)) ((1 0) (2 0))
    ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (0 3)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr-0 xr-0) hint))
    (hash "key" (hash "share" xr-0 xr-0) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint))))
  (label 188)
  (parent 166)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 0) (10 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 189)
  (parent 167)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (8 0)) ((4 0) (10 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr-0) hint))
    (hash "key" (hash "share" xi xr-0) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca-0)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint))))
  (label 190)
  (parent 168)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 0) (8 0))
    ((9 0) (11 0)) ((10 1) (0 3)) ((11 1) (10 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr-0) hint))
    (hash "key" (hash "share" xi-0 xr-0) hint) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint))))
  (label 191)
  (parent 169)
  (unrealized (0 3) (11 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0))
    ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 192)
  (parent 177)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (7 0)) ((1 0) (10 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)) ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 193)
  (parent 178)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "share" xi xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (7 0)) ((4 0) (10 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)) ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xr-0))
    (hash "share" xi xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "share" xi xr-0)) (send (cat "share" xi xr-0))))
  (label 194)
  (parent 179)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "share" xi-0 xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (11 0))
    ((9 1) (0 3)) ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr-0))
    (hash "share" xi-0 xr-0) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "share" xi-0 xr-0)) (send (cat "share" xi-0 xr-0))))
  (label 195)
  (parent 180)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((0 0) (11 0)) ((1 0) (2 0))
    ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (0 3)) ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 196)
  (parent 188)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (7 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 0) (11 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)) ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 197)
  (parent 189)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "share" xi xr-0))
  (precedes ((0 0) (7 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (8 0)) ((4 0) (11 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)) ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xr-0))
    (hash "share" xi xr-0) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n hint (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca-0)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xr-0))
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "share" xi xr-0)) (send (cat "share" xi xr-0))))
  (label 198)
  (parent 190)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "share" xi-0 xr-0))
  (precedes ((0 0) (7 0)) ((0 0) (12 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 0) (8 0))
    ((9 0) (12 0)) ((10 1) (0 3)) ((11 1) (10 0)) ((12 1) (11 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr-0))
    (hash "share" xi-0 xr-0) (11 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n hint (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n (hash "hint" (hash "share" xr xi))
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "share" xi-0 xr-0)) (send (cat "share" xi-0 xr-0))))
  (label 199)
  (parent 191)
  (unrealized (0 3) (12 0))
  (dead)
  (comment "empty cohort"))

(comment "Nothing left to do")

(defprotocol nhca-nohint diffie-hellman
  (defrole init
    (vars (xi rndx) (xr expt) (a b ca name) (n text) (hint mesg))
    (trace (send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    (non-orig (privk a) (privk ca))
    (uniq-gen xi))
  (defrole resp
    (vars (xr rndx) (xi expt) (a b ca name) (n text))
    (trace (send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    (non-orig (privk b) (privk ca))
    (uniq-gen xr))
  (defrole ca
    (vars (subject ca name) (x expt))
    (trace (recv (enc "reg" (hash "public" x) subject (privk subject)))
      (send (enc (hash "public" x) subject (privk ca))))
    (non-orig (privk subject)))
  (comment A diffie-hellman exchange which uses a certificate authority
    to certify lonh-term NH values))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (comment Full initiator POV No need to make extra assumptions)
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint))))))
  (label 200)
  (unrealized (0 1) (0 3))
  (origs)
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 201)
  (parent 200)
  (unrealized (0 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a ca name) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test (displaced 2 1 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi) hint
          (enc (hash "public" xi) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi) hint))
          (enc "check" n (hash "key" (hash "share" xi xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 202)
  (parent 201)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr x))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (0 3)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n (hash "key" (hash "share" xi x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi x) hint))
          (enc "check" n (hash "key" (hash "share" x xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 203)
  (parent 201)
  (unrealized (0 3) (2 0))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a ca name) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi) hint))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi) hint))
    (enc n (hash "key" (hash "share" xi xi) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi) hint
          (enc (hash "public" xi) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi) hint))
          (enc "check" n (hash "key" (hash "share" xi xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi) hint))
      (send (hash "key" (hash "share" xi xi) hint))))
  (label 204)
  (parent 202)
  (unrealized (2 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a ca name) (xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 3)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xr)
  (operation encryption-test (displaced 3 0 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (send
        (cat (hash "public" xr) (enc (hash "public" xr) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "key" (hash "share" xr xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr) hint)))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca)))))
  (label 205)
  (parent 203)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 1 (b b) (xr xr))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (0 3)) ((3 0) (2 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr) b (privk b)) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))))
  (label 206)
  (parent 203)
  (unrealized (0 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a ca name) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi) hint))
  (deflistener (cat "key" (hash "share" xi xi) hint))
  (precedes ((0 0) (1 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 1) (2 0)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi) hint))
    (hash "key" (hash "share" xi xi) hint) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi) hint
          (enc (hash "public" xi) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi) hint))
          (enc "check" n (hash "key" (hash "share" xi xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi) hint))
      (send (hash "key" (hash "share" xi xi) hint)))
    ((recv (cat "key" (hash "share" xi xi) hint))
      (send (cat "key" (hash "share" xi xi) hint))))
  (label 207)
  (parent 204)
  (unrealized (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a ca name) (xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xr xr) hint))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
    ((2 1) (0 3)) ((3 1) (0 3)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xr)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr xr) hint))
    (enc n (hash "key" (hash "share" xr xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (send
        (cat (hash "public" xr) (enc (hash "public" xr) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "key" (hash "share" xr xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr) hint)))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (hash "key" (hash "share" xr xr) hint))
      (send (hash "key" (hash "share" xr xr) hint))))
  (label 208)
  (parent 205)
  (unrealized (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a ca a-0 b ca-0 name) (xi xr rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca-0) (xr xr) (xi xi))
  (precedes ((0 0) (1 0)) ((0 0) (3 2)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 3) (0 3)))
  (non-orig (privk a) (privk ca) (privk b) (privk ca-0))
  (uniq-gen xi xr)
  (operation encryption-test (displaced 3 4 resp 4)
    (enc n
      (hash "key" (hash "share" xi xr)
        (hash "hint" (hash "share" xr xi)))) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca-0)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca-0))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))))
  (label 209)
  (parent 206)
  (unrealized (3 1) (3 2))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 1 (b b) (xr xr))
  (deflistener (hash "key" (hash "share" xi xr) hint))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((4 1) (0 3)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr) hint))
    (enc n (hash "key" (hash "share" xi xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b))))
    ((recv (hash "key" (hash "share" xi xr) hint))
      (send (hash "key" (hash "share" xi xr) hint))))
  (label 210)
  (parent 206)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a ca name) (xi rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi) hint))
  (deflistener (cat "key" (hash "share" xi xi) hint))
  (deflistener (cat "share" xi xi))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 1) (2 0)) ((4 1) (3 0)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xi)
  (operation encryption-test (added-listener (cat "share" xi xi))
    (hash "share" xi xi) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi) hint
          (enc (hash "public" xi) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi) hint))
          (enc "check" n (hash "key" (hash "share" xi xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi) hint))
      (send (hash "key" (hash "share" xi xi) hint)))
    ((recv (cat "key" (hash "share" xi xi) hint))
      (send (cat "key" (hash "share" xi xi) hint)))
    ((recv (cat "share" xi xi)) (send (cat "share" xi xi))))
  (label 211)
  (parent 207)
  (unrealized (4 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a ca name) (xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xr xr) hint))
  (deflistener (cat "key" (hash "share" xr xr) hint))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1))
    ((2 1) (0 3)) ((3 1) (0 3)) ((4 1) (3 0)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xr)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr xr) hint))
    (hash "key" (hash "share" xr xr) hint) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (send
        (cat (hash "public" xr) (enc (hash "public" xr) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "key" (hash "share" xr xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr) hint)))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (hash "key" (hash "share" xr xr) hint))
      (send (hash "key" (hash "share" xr xr) hint)))
    ((recv (cat "key" (hash "share" xr xr) hint))
      (send (cat "key" (hash "share" xr xr) hint))))
  (label 212)
  (parent 208)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a ca a-0 b name) (xi xr rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca) (xr xr) (xi xi))
  (precedes ((0 0) (1 0)) ((0 0) (3 2)) ((1 1) (0 1)) ((2 1) (3 1))
    ((3 0) (2 0)) ((3 3) (0 3)))
  (non-orig (privk a) (privk ca) (privk b))
  (uniq-gen xi xr)
  (operation encryption-test (displaced 4 2 ca 2)
    (enc (hash "public" xr) b (privk ca-0)) (3 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))))
  (label 213)
  (parent 209)
  (unrealized (3 2))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a ca a-0 b ca-0 name) (xi xr rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca-0) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (3 2)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 3) (0 3)) ((4 1) (3 1)))
  (non-orig (privk a) (privk ca) (privk b) (privk ca-0))
  (uniq-gen xi xr)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr) b (privk ca-0)) (3 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca-0)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca-0))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0)))))
  (label 214)
  (parent 209)
  (unrealized (3 2))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 1 (b b) (xr xr))
  (deflistener (hash "key" (hash "share" xi xr) hint))
  (deflistener (cat "key" (hash "share" xi xr) hint))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (5 0)) ((4 1) (0 3)) ((5 1) (4 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr) hint))
    (hash "key" (hash "share" xi xr) hint) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b))))
    ((recv (hash "key" (hash "share" xi xr) hint))
      (send (hash "key" (hash "share" xi xr) hint)))
    ((recv (cat "key" (hash "share" xi xr) hint))
      (send (cat "key" (hash "share" xi xr) hint))))
  (label 215)
  (parent 210)
  (unrealized (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a ca name) (xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xr xr) hint))
  (deflistener (cat "key" (hash "share" xr xr) hint))
  (deflistener (cat "share" xr xr))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1))
    ((2 1) (0 3)) ((3 1) (0 3)) ((4 1) (3 0)) ((5 1) (4 0)))
  (non-orig (privk a) (privk ca))
  (uniq-gen xr)
  (operation encryption-test (added-listener (cat "share" xr xr))
    (hash "share" xr xr) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (send
        (cat (hash "public" xr) (enc (hash "public" xr) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) a (privk ca))
          (enc n (hash "key" (hash "share" xr xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr) hint)))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (hash "key" (hash "share" xr xr) hint))
      (send (hash "key" (hash "share" xr xr) hint)))
    ((recv (cat "key" (hash "share" xr xr) hint))
      (send (cat "key" (hash "share" xr xr) hint)))
    ((recv (cat "share" xr xr)) (send (cat "share" xr xr))))
  (label 216)
  (parent 212)
  (unrealized (5 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (n text) (a ca b name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 2)) ((2 1) (3 1))
    ((3 0) (2 0)) ((3 3) (0 3)))
  (non-orig (privk a) (privk ca) (privk b))
  (uniq-gen xr xi)
  (operation encryption-test (displaced 4 1 ca 2)
    (enc (hash "public" xi) a-0 (privk ca)) (3 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))))
  (label 217)
  (parent 213)
  (unrealized)
  (shape)
  (maps
    ((0)
      ((xi xi) (xr xr) (a a) (b b) (ca ca) (n n)
        (hint (hash "hint" (hash "share" xr xi))))))
  (origs))

(defskeleton nhca-nohint
  (vars (n text) (a ca a-0 b name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a-0) (ca ca) (x xi))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (3 1))
    ((3 0) (2 0)) ((3 3) (0 3)) ((4 1) (3 2)))
  (non-orig (privk a) (privk ca) (privk a-0) (privk b))
  (uniq-gen xr xi)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a-0 (privk ca)) (3 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a-0 (privk a-0)))
      (send (enc (hash "public" xi) a-0 (privk ca)))))
  (label 218)
  (parent 213)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a ca b name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((1 1) (3 2)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 3) (0 3)) ((4 1) (3 1)))
  (non-orig (privk a) (privk ca) (privk b))
  (uniq-gen xr xi)
  (operation encryption-test (displaced 5 1 ca 2)
    (enc (hash "public" xi) a-0 (privk ca-0)) (3 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 219)
  (parent 214)
  (seen 217)
  (unrealized)
  (comment "1 in cohort - 0 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a ca a-0 b ca-0 name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a-0) (b b) (ca ca-0) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a-0) (ca ca-0) (x xi))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 3) (0 3)) ((4 1) (3 1))
    ((5 1) (3 2)))
  (non-orig (privk a) (privk ca) (privk a-0) (privk b) (privk ca-0))
  (uniq-gen xr xi)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a-0 (privk ca-0)) (3 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca-0)))
      (recv
        (cat (hash "public" xi)
          (enc (hash "public" xi) a-0 (privk ca-0))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a-0 (privk a-0)))
      (send (enc (hash "public" xi) a-0 (privk ca-0)))))
  (label 220)
  (parent 214)
  (unrealized (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 1 (b b) (xr xr))
  (deflistener (hash "key" (hash "share" xi xr) hint))
  (deflistener (cat "key" (hash "share" xi xr) hint))
  (deflistener (cat "share" xi xr))
  (precedes ((0 0) (1 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (6 0)) ((4 1) (0 3)) ((5 1) (4 0))
    ((6 1) (5 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (operation encryption-test (added-listener (cat "share" xi xr))
    (hash "share" xi xr) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b))))
    ((recv (hash "key" (hash "share" xi xr) hint))
      (send (hash "key" (hash "share" xi xr) hint)))
    ((recv (cat "key" (hash "share" xi xr) hint))
      (send (cat "key" (hash "share" xi xr) hint)))
    ((recv (cat "share" xi xr)) (send (cat "share" xi xr))))
  (label 221)
  (parent 215)
  (unrealized (6 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (n text) (a ca b name) (xr xr-0 rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b b) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (3 1))
    ((3 0) (2 0)) ((3 3) (0 3)) ((4 1) (3 2)))
  (non-orig (privk a) (privk ca) (privk b))
  (uniq-gen xr xr-0)
  (operation encryption-test (displaced 5 0 resp 1)
    (enc "reg" (hash "public" xr-0) a-0 (privk a-0)) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 222)
  (parent 218)
  (unrealized)
  (shape)
  (maps
    ((0)
      ((xi xr-0) (xr xr) (a a) (b b) (ca ca) (n n)
        (hint (hash "hint" (hash "share" xr xr-0))))))
  (origs))

(defskeleton nhca-nohint
  (vars (n text) (a ca b ca-0 name) (xr xr-0 rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b b) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand resp 4 (n n) (a a) (b b) (ca ca-0) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (0 3))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 3) (0 3)) ((4 1) (3 1))
    ((5 1) (3 2)))
  (non-orig (privk a) (privk ca) (privk b) (privk ca-0))
  (uniq-gen xr xr-0)
  (operation encryption-test (displaced 6 0 resp 1)
    (enc "reg" (hash "public" xr-0) a-0 (privk a-0)) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca-0)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0)))))
  (label 223)
  (parent 220)
  (unrealized)
  (shape)
  (maps
    ((0)
      ((xi xr-0) (xr xr) (a a) (b b) (ca ca) (n n)
        (hint (hash "hint" (hash "share" xr xr-0))))))
  (origs))

(comment "Nothing left to do")

(defprotocol nhca-nohint diffie-hellman
  (defrole init
    (vars (xi rndx) (xr expt) (a b ca name) (n text) (hint mesg))
    (trace (send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    (non-orig (privk a) (privk ca))
    (uniq-gen xi))
  (defrole resp
    (vars (xr rndx) (xi expt) (a b ca name) (n text))
    (trace (send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    (non-orig (privk b) (privk ca))
    (uniq-gen xr))
  (defrole ca
    (vars (subject ca name) (x expt))
    (trace (recv (enc "reg" (hash "public" x) subject (privk subject)))
      (send (enc (hash "public" x) subject (privk ca))))
    (non-orig (privk subject)))
  (comment A diffie-hellman exchange which uses a certificate authority
    to certify lonh-term NH values))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xr rndx) (xi expt))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (comment Full responder point of view with freshly chosen n)
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi)))))))
  (label 224)
  (unrealized (0 1) (0 2) (0 4))
  (origs (n (0 3)))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xi expt) (xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr) b (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 225)
  (parent 224)
  (unrealized (0 2) (0 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (displaced 2 1 ca 2)
    (enc (hash "public" x) a (privk ca)) (0 2))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 226)
  (parent 225)
  (unrealized (0 4))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xr rndx) (x expt))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi x))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x x))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (0 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) a (privk ca)) (0 2))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" x) (enc (hash "public" x) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr x))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr x)
              (hash "hint" (hash "share" xr x))))
          (enc n
            (hash "key" (hash "share" x xr)
              (hash "hint" (hash "share" xr x))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr x)
            (hash "hint" (hash "share" xr x))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" x) a (privk a)))
      (send (enc (hash "public" x) a (privk ca)))))
  (label 227)
  (parent 225)
  (unrealized (0 4) (2 0))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 4)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr))))
    (enc "check" n
      (hash "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr)))) (0 4))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr))))))
  (label 228)
  (parent 226)
  (unrealized (2 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 2)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (displaced 3 0 resp 1)
    (enc "reg" (hash "public" xr-0) a (privk a)) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 229)
  (parent 227)
  (unrealized (0 4))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xr xr-0 rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand resp 1 (b a) (xr xr-0))
  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (0 2)) ((3 0) (2 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) a (privk a)) (2 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))))
  (label 230)
  (parent 227)
  (unrealized (0 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (deflistener
    (cat "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr))))
  (precedes ((0 0) (1 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (0 4))
    ((3 1) (2 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr))))
    (hash "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr)))
    (2 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv
       (cat "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (cat "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr))))))
  (label 231)
  (parent 228)
  (unrealized (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 1) (0 4)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr))))
    (enc "check" n
      (hash "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr)))) (0 4))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr))))))
  (label 232)
  (parent 229)
  (unrealized (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca a b-0 ca-0 name) (xr xi rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi) (xr xr))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 4) (0 4)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (displaced 3 4 init 5)
    (enc "check" n
      (hash "key" (hash "share" xr xi)
        (hash "hint" (hash "share" xr xi)))) (0 4))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))))))
  (label 233)
  (parent 230)
  (unrealized (3 1) (3 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xr xr-0 rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand resp 1 (b a) (xr xr-0))
  (deflistener
    (hash "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (4 0)) ((4 1) (0 4)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr xr-0)
        (hash "hint" (hash "share" xr xr-0))))
    (enc "check" n
      (hash "key" (hash "share" xr xr-0)
        (hash "hint" (hash "share" xr xr-0)))) (0 4))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (hash "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0))))))
  (label 234)
  (parent 230)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (deflistener
    (cat "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr))))
  (deflistener (cat "share" xr xr))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (0 4))
    ((3 1) (2 0)) ((4 1) (3 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr xr))
    (hash "share" xr xr) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv
       (cat "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (cat "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv (cat "share" xr xr)) (send (cat "share" xr xr))))
  (label 235)
  (parent 231)
  (unrealized (4 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (deflistener
    (cat "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr))))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 1) (0 4)) ((4 1) (3 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr xr)
        (hash "hint" (hash "share" xr xr))))
    (hash "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr)))
    (3 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv
       (cat "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (cat "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr))))))
  (label 236)
  (parent 232)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca a b-0 name) (xr xi rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca) (xi xi) (xr xr))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((2 1) (3 1)) ((3 0) (2 0)) ((3 4) (0 4)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (displaced 4 2 ca 2)
    (enc (hash "public" xi) a (privk ca-0)) (3 1))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))))))
  (label 237)
  (parent 233)
  (unrealized (3 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca a b-0 ca-0 name) (xr xi rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 4) (0 4)) ((4 1) (3 1)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a (privk ca-0)) (3 1))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0)))))
  (label 238)
  (parent 233)
  (unrealized (3 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xr xr-0 rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand resp 1 (b a) (xr xr-0))
  (deflistener
    (hash "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (deflistener
    (cat "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (5 0)) ((4 1) (0 4)) ((5 1) (4 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr xr-0)
        (hash "hint" (hash "share" xr xr-0))))
    (hash "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (hash "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0)))))
    ((recv
       (cat "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (cat "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0))))))
  (label 239)
  (parent 234)
  (unrealized (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca name) (xr rndx))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr) (xi xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener
    (hash "key" (hash "share" xr xr)
      (hash "hint" (hash "share" xr xr))))
  (deflistener
    (cat "key" (hash "share" xr xr) (hash "hint" (hash "share" xr xr))))
  (deflistener (cat "share" xr xr))
  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 1) (0 4)) ((4 1) (3 0)) ((5 1) (4 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr xr))
    (hash "share" xr xr) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr) (enc (hash "public" xr) b (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))
          (enc n
            (hash "key" (hash "share" xr xr)
              (hash "hint" (hash "share" xr xr))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr)
            (hash "hint" (hash "share" xr xr))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (hash "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv
       (cat "key" (hash "share" xr xr)
         (hash "hint" (hash "share" xr xr))))
      (send
        (cat "key" (hash "share" xr xr)
          (hash "hint" (hash "share" xr xr)))))
    ((recv (cat "share" xr xr)) (send (cat "share" xr xr))))
  (label 240)
  (parent 236)
  (unrealized (5 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (n text) (b ca a name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((2 1) (3 1)) ((3 0) (2 0)) ((3 4) (0 4)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 4 1 ca 2)
    (enc (hash "public" xr) b-0 (privk ca)) (3 3))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))))))
  (label 241)
  (parent 237)
  (unrealized)
  (shape)
  (maps ((0) ((n n) (xr xr) (xi xi) (a a) (b b) (ca ca))))
  (origs (n (0 3))))

(defskeleton nhca-nohint
  (vars (n text) (b ca a b-0 name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b-0) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((0 3) (3 3)) ((1 1) (0 1))
    ((2 1) (0 2)) ((2 1) (3 1)) ((3 0) (2 0)) ((3 4) (0 4))
    ((4 1) (3 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk b-0))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr) b-0 (privk ca)) (3 3))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b-0 (privk b-0)))
      (send (enc (hash "public" xr) b-0 (privk ca)))))
  (label 242)
  (parent 237)
  (unrealized (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca a name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (1 0)) ((0 3) (3 3)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (4 0)) ((3 4) (0 4)) ((4 1) (3 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 5 1 ca 2)
    (enc (hash "public" xr) b-0 (privk ca-0)) (3 3))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 243)
  (parent 238)
  (unrealized)
  (shape)
  (maps ((0) ((n n) (xr xr) (xi xi) (a a) (b b) (ca ca))))
  (origs (n (0 3))))

(defskeleton nhca-nohint
  (vars (n text) (b ca a b-0 ca-0 name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b-0) (ca ca-0) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((0 3) (3 3)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 0) (2 0)) ((3 0) (4 0)) ((3 4) (0 4))
    ((4 1) (3 1)) ((5 1) (3 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk b-0) (privk ca-0))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr) b-0 (privk ca-0)) (3 3))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b-0 (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b-0 (privk b-0)))
      (send (enc (hash "public" xr) b-0 (privk ca-0)))))
  (label 244)
  (parent 238)
  (unrealized (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xr xr-0 rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand resp 1 (b a) (xr xr-0))
  (deflistener
    (hash "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (deflistener
    (cat "key" (hash "share" xr xr-0)
      (hash "hint" (hash "share" xr xr-0))))
  (deflistener (cat "share" xr xr-0))
  (precedes ((0 0) (1 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (0 2))
    ((3 0) (2 0)) ((3 0) (6 0)) ((4 1) (0 4)) ((5 1) (4 0))
    ((6 1) (5 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr xr-0))
    (hash "share" xr xr-0) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (hash "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0)))))
    ((recv
       (cat "key" (hash "share" xr xr-0)
         (hash "hint" (hash "share" xr xr-0))))
      (send
        (cat "key" (hash "share" xr xr-0)
          (hash "hint" (hash "share" xr xr-0)))))
    ((recv (cat "share" xr xr-0)) (send (cat "share" xr xr-0))))
  (label 245)
  (parent 239)
  (unrealized (6 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (n text) (b ca a name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (4 0)) ((0 3) (3 3)) ((1 1) (0 1))
    ((2 1) (0 2)) ((2 1) (3 1)) ((3 0) (2 0)) ((3 4) (0 4))
    ((4 1) (3 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 5 0 resp 1)
    (enc "reg" (hash "public" xr) b-0 (privk b-0)) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 246)
  (parent 242)
  (seen 241)
  (unrealized)
  (comment "1 in cohort - 0 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (b ca a ca-0 name) (xi xr rndx))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (precedes ((0 0) (1 0)) ((0 0) (5 0)) ((0 3) (3 3)) ((1 1) (0 1))
    ((2 1) (0 2)) ((3 0) (2 0)) ((3 0) (4 0)) ((3 4) (0 4))
    ((4 1) (3 1)) ((5 1) (3 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 6 0 resp 1)
    (enc "reg" (hash "public" xr) b-0 (privk b-0)) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0)))))
  (label 247)
  (parent 244)
  (unrealized)
  (shape)
  (maps ((0) ((n n) (xr xr) (xi xi) (a a) (b b) (ca ca))))
  (origs (n (0 3))))

(comment "Nothing left to do")

(defprotocol nhca-nohint diffie-hellman
  (defrole init
    (vars (xi rndx) (xr expt) (a b ca name) (n text) (hint mesg))
    (trace (send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    (non-orig (privk a) (privk ca))
    (uniq-gen xi))
  (defrole resp
    (vars (xr rndx) (xi expt) (a b ca name) (n text))
    (trace (send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    (non-orig (privk b) (privk ca))
    (uniq-gen xr))
  (defrole ca
    (vars (subject ca name) (x expt))
    (trace (recv (enc "reg" (hash "public" x) subject (privk subject)))
      (send (enc (hash "public" x) subject (privk ca))))
    (non-orig (privk subject)))
  (comment A diffie-hellman exchange which uses a certificate authority
    to certify lonh-term NH values))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx)
    (xr-0 xi-0 expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi-0))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (uniq-orig n)
  (comment point of view in which init and resp each complete and they
    agree on the relevant parameters)
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0)))))))
  (label 248)
  (unrealized (0 1) (0 3) (1 1) (1 2) (1 4))
  (preskeleton)
  (origs (n (1 3)))
  (comment "Not a skeleton"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi xr rndx)
    (xr-0 xi-0 expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi-0))
  (precedes ((1 3) (0 3)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (uniq-orig n)
  (comment point of view in which init and resp each complete and they
    agree on the relevant parameters)
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0)))))))
  (label 249)
  (parent 248)
  (unrealized (0 1) (0 3) (1 1) (1 2) (1 4))
  (origs (n (1 3)))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr xi-0 expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr-0) b (privk ca)) (1 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca)))))
  (label 250)
  (parent 249)
  (unrealized (0 1) (0 3) (1 2) (1 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 3 2 ca 2)
    (enc (hash "public" x) a (privk ca)) (1 2))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca)))))
  (label 251)
  (parent 250)
  (unrealized (0 1) (0 3) (1 4))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi x))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x x))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) a (privk ca)) (1 2))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" x) (enc (hash "public" x) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 x))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 x)
              (hash "hint" (hash "share" xr-0 x))))
          (enc n
            (hash "key" (hash "share" x xr-0)
              (hash "hint" (hash "share" xr-0 x))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 x)
            (hash "hint" (hash "share" xr-0 x))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" x) a (privk a)))
      (send (enc (hash "public" x) a (privk ca)))))
  (label 252)
  (parent 250)
  (unrealized (0 1) (0 3) (1 4) (3 0))
  (comment "3 in cohort - 3 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 4)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0))))
    (enc "check" n
      (hash "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0))))))
  (label 253)
  (parent 251)
  (unrealized (0 1) (0 3) (3 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xr-1)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (precedes ((0 0) (3 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test (displaced 4 0 resp 1)
    (enc "reg" (hash "public" xr-2) a (privk a)) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))
      (recv (enc (hash "public" xr-1) a (privk ca)))
      (send
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xr-1 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-1 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr-1) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca)))))
  (label 254)
  (parent 252)
  (unrealized (0 1) (0 3) (1 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 4 1 resp 1)
    (enc "reg" (hash "public" xr-1) a (privk a)) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca)))))
  (label 255)
  (parent 252)
  (unrealized (0 1) (0 3) (1 4))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (defstrand resp 1 (b a) (xr xr-1))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-1) a (privk a)) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))))
  (label 256)
  (parent 252)
  (unrealized (0 1) (0 3) (1 4))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (precedes ((1 0) (2 0)) ((1 0) (4 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 4)) ((4 1) (3 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0))))
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))) (3 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (cat "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0))))))
  (label 257)
  (parent 253)
  (unrealized (0 1) (0 3) (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xi xr rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (3 0)) ((0 4) (1 4)) ((1 0) (2 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (1 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr)
  (uniq-orig n)
  (operation encryption-test (displaced 4 0 init 5)
    (enc "check" n
      (hash "key" (hash "share" xr-0 xi)
        (hash "hint" (hash "share" xr-0 xi)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 258)
  (parent 254)
  (unrealized (0 1))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xr-1)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (precedes ((0 0) (3 0)) ((0 0) (4 0)) ((1 0) (2 0)) ((1 0) (4 0))
    ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1))))
    (enc "check" n
      (hash "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))
      (recv (enc (hash "public" xr-1) a (privk ca)))
      (send
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xr-1 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-1 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr-1) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1))))))
  (label 259)
  (parent 254)
  (unrealized (0 1) (0 3) (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 0) (4 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0))))
    (enc "check" n
      (hash "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0))))))
  (label 260)
  (parent 255)
  (unrealized (0 1) (0 3) (4 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a b-0 ca-0 name) (xi rndx) (xr expt)
    (xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi-0) (xr xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 4) (1 4)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 4 5 init 5)
    (enc "check" n
      (hash "key" (hash "share" xr-0 xi-0)
        (hash "hint" (hash "share" xr-0 xi-0)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))))
  (label 261)
  (parent 256)
  (unrealized (0 1) (0 3) (4 1) (4 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (defstrand resp 1 (b a) (xr xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((5 1) (1 4)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (hash "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1))))
    (enc "check" n
      (hash "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1)))) (1 4))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-1) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1))))))
  (label 262)
  (parent 256)
  (unrealized (0 1) (0 3) (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 4)) ((4 1) (3 0)) ((5 1) (4 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (cat "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 263)
  (parent 257)
  (unrealized (0 1) (0 3) (5 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (3 0)) ((0 4) (1 4)) ((1 0) (2 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (0 1)) ((3 1) (1 2)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (displaced 4 3 ca 2)
    (enc (hash "public" xi) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 264)
  (parent 258)
  (unrealized)
  (shape)
  (maps
    ((0 1)
      ((a a) (b b) (ca ca) (xi xi) (xr xr) (n n) (xr-0 xr)
        (hint (hash "hint" (hash "share" xr xi))) (xi-0 xi))))
  (origs (n (1 3))))

(defskeleton nhca-nohint
  (vars (n text) (a b ca name) (xr xi rndx))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (3 0)) ((0 0) (4 0)) ((0 4) (1 4)) ((1 0) (2 0))
    ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (0 1)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr xi)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 265)
  (parent 258)
  (unrealized)
  (shape)
  (maps
    ((0 1)
      ((a a) (b b) (ca ca) (xi xi) (xr xr) (n n) (xr-0 xr)
        (hint (hash "hint" (hash "share" xr xi))) (xi-0 xi))))
  (origs (n (1 3))))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xr-1)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (precedes ((0 0) (3 0)) ((0 0) (5 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4))
    ((5 1) (4 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1))))
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))
      (recv (enc (hash "public" xr-1) a (privk ca)))
      (send
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xr-1 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-1 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr-1) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (cat "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1))))))
  (label 266)
  (parent 259)
  (unrealized (0 1) (0 3) (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4)) ((5 1) (4 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr-0 xr-0)
        (hash "hint" (hash "share" xr-0 xr-0))))
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))) (4 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (cat "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0))))))
  (label 267)
  (parent 260)
  (unrealized (0 1) (0 3) (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a b-0 name) (xi rndx) (xr expt)
    (xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca) (xi xi-0) (xr xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 5 3 ca 2)
    (enc (hash "public" xi-0) a (privk ca-0)) (4 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))))
  (label 268)
  (parent 261)
  (unrealized (0 1) (0 3) (4 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a b-0 ca-0 name) (xi rndx) (xr expt)
    (xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca-0)) (4 1))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0)))))
  (label 269)
  (parent 261)
  (unrealized (0 1) (0 3) (4 3))
  (comment "2 in cohort - 2 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (defstrand resp 1 (b a) (xr xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (precedes ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (6 0)) ((5 1) (1 4))
    ((6 1) (5 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test
    (added-listener
      (cat "key" (hash "share" xr-0 xr-1)
        (hash "hint" (hash "share" xr-0 xr-1))))
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-1) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (cat "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1))))))
  (label 270)
  (parent 262)
  (unrealized (0 1) (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xr expt) (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xr-1)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener (cat "share" xr-0 xr-1))
  (precedes ((0 0) (3 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4))
    ((5 1) (4 0)) ((6 1) (5 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-1))
    (hash "share" xr-0 xr-1) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xr-1) a (privk a)))
      (recv (enc (hash "public" xr-1) a (privk ca)))
      (send
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xr-1 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-1 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xr-1) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (cat "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv (cat "share" xr-0 xr-1)) (send (cat "share" xr-0 xr-1))))
  (label 271)
  (parent 266)
  (unrealized (0 1) (0 3) (6 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca name) (xi rndx) (xr expt)
    (xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a b) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a b) (b b) (ca ca) (xr xr-0) (xi xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-0)
      (hash "hint" (hash "share" xr-0 xr-0))))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (3 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 1) (1 4)) ((5 1) (4 0))
    ((6 1) (5 0)))
  (non-orig (privk b) (privk ca))
  (uniq-gen xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xi) b (privk b)))
      (recv (enc (hash "public" xi) b (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) b (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) b (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr-0)
              (hash "hint" (hash "share" xr-0 xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-0)
            (hash "hint" (hash "share" xr-0 xr-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (hash "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-0)
         (hash "hint" (hash "share" xr-0 xr-0))))
      (send
        (cat "key" (hash "share" xr-0 xr-0)
          (hash "hint" (hash "share" xr-0 xr-0)))))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 272)
  (parent 267)
  (unrealized (0 1) (0 3) (6 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b) (ca ca) (xi xi-0) (xr xr-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 5 2 ca 2)
    (enc (hash "public" xr-0) b-0 (privk ca)) (4 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))))
  (label 273)
  (parent 268)
  (unrealized (0 1) (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a b-0 name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject b-0) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk b-0))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr-0) b-0 (privk ca)) (4 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) b-0 (privk b-0)))
      (send (enc (hash "public" xr-0) b-0 (privk ca)))))
  (label 274)
  (parent 268)
  (unrealized (0 1) (0 3) (5 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b) (ca ca) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 6 2 ca 2)
    (enc (hash "public" xr-0) b-0 (privk ca-0)) (4 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 275)
  (parent 269)
  (unrealized (0 1) (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a b-0 ca-0 name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b-0) (ca ca-0) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject b-0) (ca ca-0) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk b-0) (privk ca-0))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xr-0) b-0 (privk ca-0)) (4 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b-0 (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) b-0 (privk b-0)))
      (send (enc (hash "public" xr-0) b-0 (privk ca-0)))))
  (label 276)
  (parent 269)
  (unrealized (0 1) (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (a b ca name) (xi rndx) (xr expt)
    (xr-0 xr-1 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xr-1))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-1))
  (defstrand resp 1 (b a) (xr xr-1))
  (deflistener
    (hash "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener
    (cat "key" (hash "share" xr-0 xr-1)
      (hash "hint" (hash "share" xr-0 xr-1))))
  (deflistener (cat "share" xr-0 xr-1))
  (precedes ((1 0) (2 0)) ((1 0) (7 0)) ((1 3) (0 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (7 0)) ((5 1) (1 4))
    ((6 1) (5 0)) ((7 1) (6 0)))
  (non-orig (privk a) (privk b) (privk ca))
  (uniq-gen xi xr-0 xr-1)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-1))
    (hash "share" xr-0 xr-1) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xr-1)
          (enc (hash "public" xr-1) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xr-1))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr-1)
              (hash "hint" (hash "share" xr-0 xr-1))))
          (enc n
            (hash "key" (hash "share" xr-1 xr-0)
              (hash "hint" (hash "share" xr-0 xr-1))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xr-1)
            (hash "hint" (hash "share" xr-0 xr-1))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xr-1) a (privk a)))
      (send (enc (hash "public" xr-1) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-1) a (privk a))))
    ((recv
       (hash "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (hash "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv
       (cat "key" (hash "share" xr-0 xr-1)
         (hash "hint" (hash "share" xr-0 xr-1))))
      (send
        (cat "key" (hash "share" xr-0 xr-1)
          (hash "hint" (hash "share" xr-0 xr-1)))))
    ((recv (cat "share" xr-0 xr-1)) (send (cat "share" xr-0 xr-1))))
  (label 277)
  (parent 270)
  (unrealized (0 1) (0 3) (7 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xr expt)
    (xi xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi)
            (hash "hint" (hash "share" xr-0 xi))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 278)
  (parent 273)
  (unrealized (0 3))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b) (ca ca) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 6 1 resp 1)
    (enc "reg" (hash "public" xr-0) b-0 (privk b-0)) (5 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca)))))
  (label 279)
  (parent 274)
  (unrealized (0 1) (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xr expt)
    (xi xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi)
            (hash "hint" (hash "share" xr-0 xi))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 280)
  (parent 275)
  (unrealized (0 3))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi rndx) (xr expt)
    (xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi-0))) (n n)
    (a a) (b b) (ca ca-0) (xi xi-0) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr-0))
  (precedes ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 1 resp 1)
    (enc "reg" (hash "public" xr-0) b-0 (privk b-0)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi-0)
            (hash "hint" (hash "share" xr-0 xi-0))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi-0))
          (enc (hash "public" xr-0) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr-0)
              (hash "hint" (hash "share" xr-0 xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi-0)
              (hash "hint" (hash "share" xr-0 xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca-0)))))
  (label 281)
  (parent 276)
  (unrealized (0 1) (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 6 2 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 282)
  (parent 278)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 6 3 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 283)
  (parent 278)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 6 5 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 284)
  (parent 278)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr x))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 x) hint))
          (enc "check" n (hash "key" (hash "share" x xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 285)
  (parent 278)
  (unrealized (0 3) (6 0))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xr expt)
    (xi xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi)
            (hash "hint" (hash "share" xr-0 xi))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 286)
  (parent 279)
  (unrealized (0 3))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 7 2 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 287)
  (parent 280)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 3 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 288)
  (parent 280)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 6 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 289)
  (parent 280)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr x))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 x) hint))
          (enc "check" n (hash "key" (hash "share" x xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 290)
  (parent 280)
  (unrealized (0 3) (7 0))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xr expt)
    (xi xr-0 xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr-0) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr-0 xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr-0 xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" xi-0) a (privk ca)) (0 1))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))
      (recv (enc (hash "public" xr-0) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr-0 xi)
            (hash "hint" (hash "share" xr-0 xi))))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr-0) (hash "hint" (hash "share" xr-0 xi))
          (enc (hash "public" xr-0) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr-0)
              (hash "hint" (hash "share" xr-0 xi))))
          (enc "check" n
            (hash "key" (hash "share" xr-0 xi)
              (hash "hint" (hash "share" xr-0 xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 291)
  (parent 281)
  (unrealized (0 3))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 292)
  (parent 282)
  (unrealized (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (6 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi-0) hint))
    (enc n (hash "key" (hash "share" xi xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint))))
  (label 293)
  (parent 283)
  (unrealized (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xi-0) hint))
    (enc n (hash "key" (hash "share" xi-0 xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint))))
  (label 294)
  (parent 284)
  (unrealized (0 3) (6 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 0 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 295)
  (parent 285)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 7 1 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 296)
  (parent 285)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 0) (6 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 4 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 297)
  (parent 285)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (precedes ((0 0) (5 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3)) ((7 0) (6 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))))
  (label 298)
  (parent 285)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 7 2 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 299)
  (parent 286)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 3 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 300)
  (parent 286)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 7 6 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 301)
  (parent 286)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 rndx) (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr x))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 x) hint))
          (enc "check" n (hash "key" (hash "share" x xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 302)
  (parent 286)
  (unrealized (0 3) (7 0))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 303)
  (parent 287)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (7 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi-0) hint))
    (enc n (hash "key" (hash "share" xi xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint))))
  (label 304)
  (parent 288)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xi-0) hint))
    (enc n (hash "key" (hash "share" xi-0 xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint))))
  (label 305)
  (parent 289)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 0 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 306)
  (parent 290)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (7 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 8 1 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 307)
  (parent 290)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 0) (7 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 4 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 308)
  (parent 290)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 0) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))))
  (label 309)
  (parent 290)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 8 2 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 310)
  (parent 291)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 3 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca)))))
  (label 311)
  (parent 291)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 7 ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca)))))
  (label 312)
  (parent 291)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 rndx)
    (x expt))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr x))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x x))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-strand ca 2)
    (enc (hash "public" x) b (privk ca)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" x) hint (enc (hash "public" x) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 x) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 x) hint))
          (enc "check" n (hash "key" (hash "share" x xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" x) b (privk b)))
      (send (enc (hash "public" x) b (privk ca)))))
  (label 313)
  (parent 291)
  (unrealized (0 3) (8 0))
  (comment "4 in cohort - 4 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (6 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 314)
  (parent 292)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (7 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (6 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi-0) hint))
    (hash "key" (hash "share" xi xi-0) hint) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint))))
  (label 315)
  (parent 293)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 1) (6 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xi-0) hint))
    (hash "key" (hash "share" xi-0 xi-0) hint) (6 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint))))
  (label 316)
  (parent 294)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr-0 xr-0) hint))
    (enc n (hash "key" (hash "share" xr-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint))))
  (label 317)
  (parent 295)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (7 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 318)
  (parent 296)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (6 0)) ((4 0) (7 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr-0) hint))
    (enc n (hash "key" (hash "share" xi xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint))))
  (label 319)
  (parent 297)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 0) (6 0)) ((7 0) (8 0)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr-0) hint))
    (enc n (hash "key" (hash "share" xi-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint))))
  (label 320)
  (parent 298)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (7 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 321)
  (parent 299)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (7 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi-0) hint))
    (enc n (hash "key" (hash "share" xi xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint))))
  (label 322)
  (parent 300)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xi-0) hint))
    (enc n (hash "key" (hash "share" xi-0 xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint))))
  (label 323)
  (parent 301)
  (unrealized (0 3) (7 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 0 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 324)
  (parent 302)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 0) (7 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 8 1 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 325)
  (parent 302)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (7 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 8 4 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 326)
  (parent 302)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (precedes ((0 0) (6 0)) ((1 0) (2 0)) ((1 0) (5 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 0) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))))
  (label 327)
  (parent 302)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (8 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 328)
  (parent 303)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (8 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi-0) hint))
    (hash "key" (hash "share" xi xi-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint))))
  (label 329)
  (parent 304)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xi-0) hint))
    (hash "key" (hash "share" xi-0 xi-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint))))
  (label 330)
  (parent 305)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr-0 xr-0) hint))
    (enc n (hash "key" (hash "share" xr-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint))))
  (label 331)
  (parent 306)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 332)
  (parent 307)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (7 0)) ((4 0) (8 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr-0) hint))
    (enc n (hash "key" (hash "share" xi xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint))))
  (label 333)
  (parent 308)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (9 0)) ((9 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr-0) hint))
    (enc n (hash "key" (hash "share" xi-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint))))
  (label 334)
  (parent 309)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 335)
  (parent 310)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (8 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xi-0) hint))
    (enc n (hash "key" (hash "share" xi xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint))))
  (label 336)
  (parent 311)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xi-0) hint))
    (enc n (hash "key" (hash "share" xi-0 xi-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint))))
  (label 337)
  (parent 312)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 9 0 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 338)
  (parent 313)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 0) (8 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (displaced 9 1 resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca)))))
  (label 339)
  (parent 313)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (8 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (displaced 9 4 resp 1)
    (enc "reg" (hash "public" xr-1) b (privk b)) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca-0)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca)))))
  (label 340)
  (parent 313)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (precedes ((0 0) (7 0)) ((1 0) (2 0)) ((1 0) (6 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3))
    ((7 1) (0 1)) ((8 1) (0 3)) ((9 0) (8 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-strand resp 1)
    (enc "reg" (hash "public" xr-0) b (privk b)) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b)))))
  (label 341)
  (parent 313)
  (unrealized (0 3))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (8 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (6 0)) ((8 1) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 342)
  (parent 314)
  (unrealized (0 3) (8 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "share" xi xi-0))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (8 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (6 0)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xi-0))
    (hash "share" xi xi-0) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "share" xi xi-0)) (send (cat "share" xi xi-0))))
  (label 343)
  (parent 315)
  (unrealized (0 3) (8 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "share" xi-0 xi-0))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 1) (6 0)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xi-0))
    (hash "share" xi-0 xi-0) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "share" xi-0 xi-0)) (send (cat "share" xi-0 xi-0))))
  (label 344)
  (parent 316)
  (unrealized (0 3) (8 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr-0 xr-0) hint))
    (hash "key" (hash "share" xr-0 xr-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint))))
  (label 345)
  (parent 317)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 346)
  (parent 318)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (6 0)) ((4 0) (8 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr-0) hint))
    (hash "key" (hash "share" xi xr-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint))))
  (label 347)
  (parent 319)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (5 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 0) (6 0)) ((7 0) (9 0)) ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr-0) hint))
    (hash "key" (hash "share" xi-0 xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint))))
  (label 348)
  (parent 320)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 349)
  (parent 321)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (8 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi-0) hint))
    (hash "key" (hash "share" xi xi-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint))))
  (label 350)
  (parent 322)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xi-0) hint))
    (hash "key" (hash "share" xi-0 xi-0) hint) (7 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint))))
  (label 351)
  (parent 323)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (8 0)) ((1 0) (2 0))
    ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr-0 xr-0) hint))
    (enc n (hash "key" (hash "share" xr-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint))))
  (label 352)
  (parent 324)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (7 0)) ((1 0) (8 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 353)
  (parent 325)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (8 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (7 0)) ((4 0) (8 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr-0) hint))
    (enc n (hash "key" (hash "share" xi xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint))))
  (label 354)
  (parent 326)
  (unrealized (0 3) (8 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (9 0))
    ((9 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr-0) hint))
    (enc n (hash "key" (hash "share" xi-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint))))
  (label 355)
  (parent 327)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (9 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 356)
  (parent 328)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "share" xi xi-0))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (9 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xi-0))
    (hash "share" xi xi-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "share" xi xi-0)) (send (cat "share" xi xi-0))))
  (label 357)
  (parent 329)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "share" xi-0 xi-0))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xi-0))
    (hash "share" xi-0 xi-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "share" xi-0 xi-0)) (send (cat "share" xi-0 xi-0))))
  (label 358)
  (parent 330)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr-0 xr-0) hint))
    (hash "key" (hash "share" xr-0 xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint))))
  (label 359)
  (parent 331)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 360)
  (parent 332)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (7 0)) ((4 0) (9 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr-0) hint))
    (hash "key" (hash "share" xi xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint))))
  (label 361)
  (parent 333)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (10 0)) ((9 1) (0 3))
    ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr-0) hint))
    (hash "key" (hash "share" xi-0 xr-0) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint))))
  (label 362)
  (parent 334)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 363)
  (parent 335)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (9 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xi-0) hint))
    (hash "key" (hash "share" xi xi-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint))))
  (label 364)
  (parent 336)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xi-0) hint))
    (hash "key" (hash "share" xi-0 xi-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint))))
  (label 365)
  (parent 337)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((0 0) (9 0)) ((1 0) (2 0))
    ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xr-0 xr-0) hint))
    (enc n (hash "key" (hash "share" xr-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint))))
  (label 366)
  (parent 338)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr) hint))
    (enc n (hash "key" (hash "share" xi-0 xr) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint))))
  (label 367)
  (parent 339)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (8 0)) ((4 0) (9 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi xr-0) hint))
    (enc n (hash "key" (hash "share" xi xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca-0)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint))))
  (label 368)
  (parent 340)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 0) (8 0))
    ((9 0) (10 0)) ((10 1) (0 3)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (hash "key" (hash "share" xi-0 xr-0) hint))
    (enc n (hash "key" (hash "share" xi-0 xr-0) hint)) (0 3))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint))))
  (label 369)
  (parent 341)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((0 0) (5 0)) ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1))
    ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 370)
  (parent 345)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (5 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0))
    ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 371)
  (parent 346)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "share" xi xr-0))
  (precedes ((0 0) (5 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 0) (6 0)) ((4 0) (9 0)) ((4 4) (1 4))
    ((5 1) (0 1)) ((6 1) (0 3)) ((7 1) (0 3)) ((8 1) (7 0))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xr-0))
    (hash "share" xi xr-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "share" xi xr-0)) (send (cat "share" xi xr-0))))
  (label 372)
  (parent 347)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "share" xi-0 xr-0))
  (precedes ((0 0) (5 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1))
    ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (0 1)) ((6 1) (0 3))
    ((7 0) (6 0)) ((7 0) (10 0)) ((8 1) (0 3)) ((9 1) (8 0))
    ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr-0))
    (hash "share" xi-0 xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "share" xi-0 xr-0)) (send (cat "share" xi-0 xr-0))))
  (label 373)
  (parent 348)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0))
    ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 374)
  (parent 349)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "share" xi xi-0))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (9 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xi-0))
    (hash "share" xi xi-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "share" xi xi-0)) (send (cat "share" xi xi-0))))
  (label 375)
  (parent 350)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "share" xi-0 xi-0))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (7 0)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xi-0))
    (hash "share" xi-0 xi-0) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "share" xi-0 xi-0)) (send (cat "share" xi-0 xi-0))))
  (label 376)
  (parent 351)
  (unrealized (0 3) (9 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (9 0)) ((1 0) (2 0))
    ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr-0 xr-0) hint))
    (hash "key" (hash "share" xr-0 xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint))))
  (label 377)
  (parent 352)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (7 0)) ((1 0) (9 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 378)
  (parent 353)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (9 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (7 0)) ((4 0) (9 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)) ((9 1) (8 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr-0) hint))
    (hash "key" (hash "share" xi xr-0) hint) (8 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint))))
  (label 379)
  (parent 354)
  (unrealized (0 3) (9 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (10 0))
    ((9 1) (0 3)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr-0) hint))
    (hash "key" (hash "share" xi-0 xr-0) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint))))
  (label 380)
  (parent 355)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3)) ((9 1) (8 0))
    ((10 1) (9 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 381)
  (parent 359)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (7 0))
    ((1 0) (10 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 382)
  (parent 360)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "share" xi xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 0) (7 0)) ((4 0) (10 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xr-0))
    (hash "share" xi xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "share" xi xr-0)) (send (cat "share" xi xr-0))))
  (label 383)
  (parent 361)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "share" xi-0 xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 3) (0 3))
    ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0))
    ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (0 1))
    ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (11 0)) ((9 1) (0 3))
    ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr-0))
    (hash "share" xi-0 xr-0) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "share" xi-0 xr-0)) (send (cat "share" xi-0 xr-0))))
  (label 384)
  (parent 362)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (10 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 385)
  (parent 363)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xi-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (deflistener (hash "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "key" (hash "share" xi xi-0) hint))
  (deflistener (cat "share" xi xi-0))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (10 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xi-0))
    (hash "share" xi xi-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0))))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi-0)
            (hash "hint" (hash "share" xr xi-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca-0)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi-0 xr)
              (hash "hint" (hash "share" xr xi-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xi-0)
              (hash "hint" (hash "share" xr xi-0)))))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xi-0) hint))
      (send (hash "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "key" (hash "share" xi xi-0) hint))
      (send (cat "key" (hash "share" xi xi-0) hint)))
    ((recv (cat "share" xi xi-0)) (send (cat "share" xi xi-0))))
  (label 386)
  (parent 364)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xi-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi-0)
    (xr xi-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (deflistener (hash "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xi-0) hint))
  (deflistener (cat "share" xi-0 xi-0))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 1) (8 0))
    ((10 1) (9 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xi-0))
    (hash "share" xi-0 xi-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xi-0) hint
          (enc (hash "public" xi-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xi-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint))
          (enc "check" n (hash "key" (hash "share" xi-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xi-0) hint))
      (send (hash "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xi-0) hint))
      (send (cat "key" (hash "share" xi-0 xi-0) hint)))
    ((recv (cat "share" xi-0 xi-0)) (send (cat "share" xi-0 xi-0))))
  (label 387)
  (parent 365)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((0 0) (10 0)) ((1 0) (2 0))
    ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (0 3)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xr-0 xr-0) hint))
    (hash "key" (hash "share" xr-0 xr-0) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint))))
  (label 388)
  (parent 366)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 0) (10 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr) hint))
    (hash "key" (hash "share" xi-0 xr) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint))))
  (label 389)
  (parent 367)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (8 0)) ((4 0) (10 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi xr-0) hint))
    (hash "key" (hash "share" xi xr-0) hint) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca-0)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint))))
  (label 390)
  (parent 368)
  (unrealized (0 3) (10 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (precedes ((0 0) (7 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 0) (8 0))
    ((9 0) (11 0)) ((10 1) (0 3)) ((11 1) (10 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test
    (added-listener (cat "key" (hash "share" xi-0 xr-0) hint))
    (hash "key" (hash "share" xi-0 xr-0) hint) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint))))
  (label 391)
  (parent 369)
  (unrealized (0 3) (11 0))
  (comment "1 in cohort - 1 not yet seen"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (7 0)) ((0 0) (10 0)) ((1 0) (2 0))
    ((1 0) (5 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4))
    ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3)) ((8 1) (0 3))
    ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 392)
  (parent 377)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 0) (7 0)) ((1 0) (10 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((3 1) (4 1)) ((4 0) (3 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)) ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 393)
  (parent 378)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "share" xi xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (10 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 0) (7 0)) ((4 0) (10 0))
    ((4 4) (1 4)) ((5 1) (4 3)) ((6 1) (0 1)) ((7 1) (0 3))
    ((8 1) (0 3)) ((9 1) (8 0)) ((10 1) (9 0)))
  (non-orig (privk ca) (privk a))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xr-0))
    (hash "share" xi xr-0) (9 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "share" xi xr-0)) (send (cat "share" xi xr-0))))
  (label 394)
  (parent 379)
  (unrealized (0 3) (10 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca) (xi xi) (xr xr))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "share" xi-0 xr-0))
  (precedes ((0 0) (6 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 0) (5 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((3 1) (4 1)) ((4 0) (3 0)) ((4 4) (1 4)) ((5 1) (4 3))
    ((6 1) (0 1)) ((7 1) (0 3)) ((8 0) (7 0)) ((8 0) (11 0))
    ((9 1) (0 3)) ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk b) (privk ca) (privk a))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr-0))
    (hash "share" xi-0 xr-0) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "share" xi-0 xr-0)) (send (cat "share" xi-0 xr-0))))
  (label 395)
  (parent 380)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xi xr xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xr-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b a) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xr-0 xr-0) hint))
  (deflistener (cat "share" xr-0 xr-0))
  (precedes ((0 0) (7 0)) ((0 0) (8 0)) ((0 0) (11 0)) ((1 0) (2 0))
    ((1 0) (6 0)) ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1))
    ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4))
    ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3))
    ((9 1) (0 3)) ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xr-0 xr-0))
    (hash "share" xr-0 xr-0) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xr-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xr-0) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xr-0 xr-0) hint))
      (send (hash "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xr-0 xr-0) hint))
      (send (cat "key" (hash "share" xr-0 xr-0) hint)))
    ((recv (cat "share" xr-0 xr-0)) (send (cat "share" xr-0 xr-0))))
  (label 396)
  (parent 388)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xi-0 xr rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (deflistener (hash "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr) hint))
  (deflistener (cat "share" xi-0 xr))
  (precedes ((0 0) (7 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 0) (8 0)) ((1 0) (11 0)) ((1 3) (0 3)) ((1 3) (4 3))
    ((2 1) (1 1)) ((3 1) (1 2)) ((4 0) (3 0)) ((4 0) (5 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)) ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xi-0 xr)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr))
    (hash "share" xi-0 xr) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr) hint
          (enc (hash "public" xr) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr) hint))
          (enc "check" n (hash "key" (hash "share" xr xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (hash "key" (hash "share" xi-0 xr) hint))
      (send (hash "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr) hint))
      (send (cat "key" (hash "share" xi-0 xr) hint)))
    ((recv (cat "share" xi-0 xr)) (send (cat "share" xi-0 xr))))
  (label 397)
  (parent 389)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (ca a ca-0 name) (xr xi xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b a) (ca ca) (xi xi)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b a) (ca ca) (xr xr) (xi xr-0))
  (defstrand ca 2 (subject a) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xr-0))) (n n)
    (a a) (b a) (ca ca-0) (xi xr-0) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr-0))
  (defstrand ca 2 (subject a) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand ca 2 (subject a) (ca ca) (x xr-0))
  (deflistener (hash "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "key" (hash "share" xi xr-0) hint))
  (deflistener (cat "share" xi xr-0))
  (precedes ((0 0) (7 0)) ((0 0) (11 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 0) (8 0)) ((4 0) (11 0))
    ((4 4) (1 4)) ((5 1) (4 1)) ((6 1) (4 3)) ((7 1) (0 1))
    ((8 1) (0 3)) ((9 1) (0 3)) ((10 1) (9 0)) ((11 1) (10 0)))
  (non-orig (privk ca) (privk a) (privk ca-0))
  (uniq-gen xr xi xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi xr-0))
    (hash "share" xi xr-0) (10 0))
  (traces
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca)))
      (send
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) a (privk ca))
          (enc n (hash "key" (hash "share" xi xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi) hint)))))
    ((send (enc "reg" (hash "public" xr) a (privk a)))
      (recv (enc (hash "public" xr) a (privk ca)))
      (recv
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca))
          (enc n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0))))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xr-0)
            (hash "hint" (hash "share" xr xr-0))))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) a (privk a)))
      (recv (enc (hash "public" xr-0) a (privk ca-0)))
      (send
        (cat (hash "public" xr-0)
          (enc (hash "public" xr-0) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xr-0))
          (enc (hash "public" xr) a (privk ca-0))
          (enc n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xr-0 xr)
              (hash "hint" (hash "share" xr xr-0))))
          (enc "check" n
            (hash "key" (hash "share" xr xr-0)
              (hash "hint" (hash "share" xr xr-0)))))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) a (privk a)))
      (send (enc (hash "public" xr) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) a (privk a)))
      (send (enc (hash "public" xr-0) a (privk ca))))
    ((recv (hash "key" (hash "share" xi xr-0) hint))
      (send (hash "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "key" (hash "share" xi xr-0) hint))
      (send (cat "key" (hash "share" xi xr-0) hint)))
    ((recv (cat "share" xi xr-0)) (send (cat "share" xi xr-0))))
  (label 398)
  (parent 390)
  (unrealized (0 3) (11 0))
  (dead)
  (comment "empty cohort"))

(defskeleton nhca-nohint
  (vars (hint mesg) (n text) (b ca a ca-0 name) (xi xr xi-0 xr-0 rndx))
  (defstrand init 5 (hint hint) (n n) (a a) (b b) (ca ca) (xi xi-0)
    (xr xr-0))
  (defstrand resp 5 (n n) (a a) (b b) (ca ca) (xr xr) (xi xi))
  (defstrand ca 2 (subject b) (ca ca) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi))
  (defstrand init 5 (hint (hash "hint" (hash "share" xr xi))) (n n)
    (a a) (b b) (ca ca-0) (xi xi) (xr xr))
  (defstrand ca 2 (subject a) (ca ca-0) (x xi))
  (defstrand ca 2 (subject b) (ca ca-0) (x xr))
  (defstrand ca 2 (subject a) (ca ca) (x xi-0))
  (defstrand ca 2 (subject b) (ca ca) (x xr-0))
  (defstrand resp 1 (b b) (xr xr-0))
  (deflistener (hash "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "key" (hash "share" xi-0 xr-0) hint))
  (deflistener (cat "share" xi-0 xr-0))
  (precedes ((0 0) (7 0)) ((0 0) (12 0)) ((1 0) (2 0)) ((1 0) (6 0))
    ((1 3) (0 3)) ((1 3) (4 3)) ((2 1) (1 1)) ((3 1) (1 2))
    ((4 0) (3 0)) ((4 0) (5 0)) ((4 4) (1 4)) ((5 1) (4 1))
    ((6 1) (4 3)) ((7 1) (0 1)) ((8 1) (0 3)) ((9 0) (8 0))
    ((9 0) (12 0)) ((10 1) (0 3)) ((11 1) (10 0)) ((12 1) (11 0)))
  (non-orig (privk b) (privk ca) (privk a) (privk ca-0))
  (uniq-gen xi xr xi-0 xr-0)
  (uniq-orig n)
  (operation encryption-test (added-listener (cat "share" xi-0 xr-0))
    (hash "share" xi-0 xr-0) (11 0))
  (traces
    ((send (enc "reg" (hash "public" xi-0) a (privk a)))
      (recv (enc (hash "public" xi-0) a (privk ca)))
      (send
        (cat (hash "public" xi-0)
          (enc (hash "public" xi-0) a (privk ca))))
      (recv
        (cat (hash "public" xr-0) hint
          (enc (hash "public" xr-0) b (privk ca))
          (enc n (hash "key" (hash "share" xi-0 xr-0) hint))))
      (send
        (cat (enc "check" n (hash "key" (hash "share" xi-0 xr-0) hint))
          (enc "check" n (hash "key" (hash "share" xr-0 xi-0) hint)))))
    ((send (enc "reg" (hash "public" xr) b (privk b)))
      (recv (enc (hash "public" xr) b (privk ca)))
      (recv
        (cat (hash "public" xi) (enc (hash "public" xi) a (privk ca))))
      (send
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca))
          (enc n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi))))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (recv
        (enc "check" n
          (hash "key" (hash "share" xr xi)
            (hash "hint" (hash "share" xr xi))))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca))))
    ((send (enc "reg" (hash "public" xi) a (privk a)))
      (recv (enc (hash "public" xi) a (privk ca-0)))
      (send
        (cat (hash "public" xi)
          (enc (hash "public" xi) a (privk ca-0))))
      (recv
        (cat (hash "public" xr) (hash "hint" (hash "share" xr xi))
          (enc (hash "public" xr) b (privk ca-0))
          (enc n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))))
      (send
        (cat
          (enc "check" n
            (hash "key" (hash "share" xi xr)
              (hash "hint" (hash "share" xr xi))))
          (enc "check" n
            (hash "key" (hash "share" xr xi)
              (hash "hint" (hash "share" xr xi)))))))
    ((recv (enc "reg" (hash "public" xi) a (privk a)))
      (send (enc (hash "public" xi) a (privk ca-0))))
    ((recv (enc "reg" (hash "public" xr) b (privk b)))
      (send (enc (hash "public" xr) b (privk ca-0))))
    ((recv (enc "reg" (hash "public" xi-0) a (privk a)))
      (send (enc (hash "public" xi-0) a (privk ca))))
    ((recv (enc "reg" (hash "public" xr-0) b (privk b)))
      (send (enc (hash "public" xr-0) b (privk ca))))
    ((send (enc "reg" (hash "public" xr-0) b (privk b))))
    ((recv (hash "key" (hash "share" xi-0 xr-0) hint))
      (send (hash "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "key" (hash "share" xi-0 xr-0) hint))
      (send (cat "key" (hash "share" xi-0 xr-0) hint)))
    ((recv (cat "share" xi-0 xr-0)) (send (cat "share" xi-0 xr-0))))
  (label 399)
  (parent 391)
  (unrealized (0 3) (12 0))
  (dead)
  (comment "empty cohort"))

(comment "Nothing left to do")