packages feed

cpsa 3.4.0 → 3.4.1

raw patch · 21 files changed

+6948/−42 lines, 21 filesnew-component:exe:cpsadebase

Files

NEWS view
@@ -1,5 +1,18 @@ CPSA NEWS +  December, 2017:++* The release of CPSA version 3.4.1 includes the following changes:+  - Fixed a bug that caused a crash in certain situations involving+    generalization+  - Fixed a bug in the chase algorithm that caused the tool to enter+    an infinite loop+  - Added a new declaration "eq" which declares pairs of values to be+    equal to each other.+  - Added a new command-line flag to skip analysis, "noanalyze" / -z.+    This allows defgoal inputs to be read in and characteristic+    skeletons computed, for model debugging.+   September, 2017:  * In CPSA version 3.4, the algorithm for handling Diffie-Hellman
cpsa.cabal view
@@ -1,5 +1,5 @@ Name:			cpsa-Version:		3.4.0+Version:		3.4.1 Maintainer:		mliskov@mitre.org Cabal-Version:		>= 1.6 License:		BSD3@@ -97,7 +97,9 @@   tst/unilateral.tst tst/uniq-gen-test.scm tst/uniq-gen-test.tst   tst/wang.tst tst/woolam.scm tst/woolam.tst tst/wrap_decrypt.lsp   tst/wrap_decrypt.tst tst/yahalom.scm tst/yahalom.tst-+  tst/aik.scm tst/aik.tst tst/reflect.scm tst/reflect.tst+  tst/station.scm tst/station.tst tst/kerb.scm tst/kerb.tst+   Source-Repository head   Type:     git   Location: git://github.com/mitre/cpsa.git@@ -208,3 +210,15 @@     Paths_cpsa CPSA.Lib.Utilities CPSA.Lib.Pretty CPSA.Lib.SExpr     CPSA.Lib.Printer CPSA.Lib.Entry CPSA.Lib.Algebra CPSA.SAS.SAS     CPSA.Basic.Algebra CPSA.DiffieHellman.Algebra++Executable cpsadebase+  Main-Is:		CPSA/Debase/Main.hs+  Build-Depends:	base >= 3 && < 5, containers+  GHC-Options:+    -Wall -fno-warn-name-shadowing -fwarn-unused-imports+  Hs-Source-Dirs:	src+  Other-Modules:+    Paths_cpsa CPSA.Lib.Utilities CPSA.Lib.Pretty CPSA.Lib.SExpr+    CPSA.Lib.Printer CPSA.Lib.Entry CPSA.Lib.Algebra+    CPSA.Basic.Algebra+
doc/cpsamanual.pdf view

binary file changed (877003 → 878228 bytes)

+ src/CPSA/Debase/Main.hs view
@@ -0,0 +1,120 @@+-- Pretty print the input++-- Copyright (c) 2009 The MITRE Corporation+--+-- This program is free software: you can redistribute it and/or+-- modify it under the terms of the BSD License as published by the+-- University of California.++module Main (main) where++import System.IO+import CPSA.Lib.SExpr+import CPSA.Lib.Printer (pp)+import CPSA.Lib.Entry++-- Runtime parameters++defaultIndent :: Int+defaultIndent = optIndent defaultOptions++main :: IO ()+main =+    do+      (p, (output, margin)) <- start filterOptions filterInterp+      h <- outputHandle output+      go (writeCpsaLn (pp margin defaultIndent) h) p+      hClose h++writeCpsaLn :: (SExpr () -> String) -> Handle -> SExpr a -> IO ()+writeCpsaLn printer h sexpr =+    do+      hPutStrLn h $ printer $ transform $ strip sexpr+      hPutStrLn h ""++go :: (SExpr Pos -> IO ()) -> PosHandle -> IO ()+go f p =+    loop+    where+      loop =+          do+            x <- gentlyReadSExpr p+            case x of+              Nothing ->+                  return ()+              Just sexpr ->+                  do+                    f sexpr+                    loop++strip :: SExpr a -> SExpr ()+strip (S _ s) = S () s+strip (Q _ s) = Q () s+strip (N _ n) = N () n+strip (L _ l) = L () (map strip l)++-- | Make a symbol.+sym :: String -> SExpr ()+sym s = S () s++{-++-- | Make a quoted string.+str :: String -> SExpr ()+str s = Q () s++-- | Make a number.+num :: Int -> SExpr ()+num n = N () n+-}++-- | Make a list of S-expressions.+lst :: [SExpr ()] -> SExpr ()+lst xs = L () xs++transform :: SExpr () -> SExpr ()+transform (L () (S () "defprotocol" : name : alg : rest)) =+  lst (sym "defprotocol" : name : alg : map role rest)+transform (L () (S () "defskeleton" : xs)) =+  skel xs+transform x = x++role :: SExpr () -> SExpr ()+role (L () (S () "defrole" : name : L () (S () "vars" : v) : rest)) =+  let (decl, bases) = vars v in+    lst (sym "defrole" : name : lst (sym "vars" : decl) :+         map (subst bases) rest)+role x = x++skel :: [SExpr ()] -> SExpr ()+skel (p@(S _ _) : L () (S () "vars" : v) : rest) =+  let (decl, _) = vars v in+    lst (sym "defskeleton" : p : lst (sym "vars" : decl) : rest)+skel xs = lst (sym "defskeleton" : xs)++vars :: [SExpr ()] -> ([SExpr ()], [String])+vars [] = ([], [])+vars (L () x : xs)+  | symStr (last x) == "base" =+      let (xs', ss) = vars xs in+        (lst (butLast x ++ [sym "expr"]) : xs',+         map symStr (butLast x) ++ ss)+  | otherwise =+      let (xs', ss) = vars xs in+        (lst x : xs', ss)+vars _ = error "vars: bad input"++symStr :: SExpr a -> String+symStr (S _ s) = s+symStr _ = error "symStr: not a symbol"++butLast :: [a] -> [a]+butLast [] = []+butLast [_] = []+butLast (x : xs) = x : butLast xs++subst :: [String] -> SExpr () -> SExpr ()+subst bases (S () s)+  | elem s bases = lst [sym "exp", lst [sym "gen"], sym s]+subst bases (L () (x : xs)) = L () (x : map (subst bases) xs)+subst _ x = x
src/CPSA/DiffieHellman/Algebra.hs view
@@ -308,11 +308,14 @@ getGroupVar x = head $ M.keys x                  -- Create group var as a basis element if be is true-groupVar :: Bool -> Id -> Term-groupVar be x = G $ M.singleton x (be, 1)+groupVarG :: Bool -> Id -> Group+groupVarG be x = M.singleton x (be, 1) +groupVar :: Bool -> Id -> Term+groupVar be x = G $ groupVarG be x+                 groupVarGroup :: Id -> Group-groupVarGroup x = M.singleton x (False, 1)+groupVarGroup x = groupVarG False x  dMapCoef :: (Coef -> Coef) -> Desc -> Desc dMapCoef f (be, c) = (be, f c)@@ -782,6 +785,7 @@     foldVars f acc t foldVars f acc t@(D _) = f acc t          -- Node variable foldVars _ acc (C _) = acc+foldVars _ acc (P _) = acc foldVars _ _ t = error $ "Algebra.foldVars: Bad term " ++ show t  -- Fold f through a term applying it to each term that is carried by the term.@@ -1441,6 +1445,7 @@       Just t -> chase (Subst s) t chase s (F Invk [t]) = chaseInvk s t chase s (F Exp [t0, G t1]) = chaseExp s t0 t1+chase (Subst s) (G t) = G $ chaseGroup s t chase _ t = t  chaseInvk :: Subst -> Term -> Term@@ -1456,19 +1461,39 @@     | M.null t1 = chase s t0 chaseExp s@(Subst ss) (I x) t1 =     case chase s (I x) of-      F Exp [t0', G t1'] -> -- chaseExp s t0' (mul t1 t1')-        if M.null t1t1'-           then t0'-           else F Exp [t0', G t1t1']-        where t1t1' = mul t1' (groupSubst ss t1)-      t0 -> F Exp [t0, chaseGroup s t1]+      F Exp [t0', G t1'] ->+        chaseExpFinalize t0' t1t1'+        where t1t1' = mul t1' (chaseGroup ss t1)+      t0 -> chaseExpFinalize t0 t1'+        where t1' = chaseGroup ss t1 chaseExp s (F Exp [t0', G t1']) t1 =     chaseExp s t0' (mul t1 t1')-chaseExp s t0 t1 = F Exp [t0, chaseGroup s t1]+chaseExp (Subst s) t0 t1 =+    chaseExpFinalize t0 t1'+    where t1' = chaseGroup s t1 -chaseGroup :: Subst -> Group -> Term-chaseGroup (Subst s) x = G $ groupSubst s x+chaseExpFinalize :: Term -> Group -> Term+chaseExpFinalize t0 t1 =+    if M.null t1+       then t0+       else F Exp [t0, G t1]+                +chaseGroup :: IdMap -> Group -> Group+chaseGroup s t =+    M.foldrWithKey f M.empty t+     where+       f x (be, c) t =+           mul (expg (chaseGroupLookup s be x) c) t +chaseGroupLookup :: IdMap -> Bool -> Id -> Group+chaseGroupLookup s be x =+    case M.lookup x s of+      Nothing -> groupVarG be x+      Just (G t) -> chaseGroup s t+      Just w -> error ("Algebra.chaseGroupLookup: Bad substitution: " +++                     show x ++ " -> " ++ show w)+               +                    -- Does x occur in t? occurs :: Id -> Term -> Bool occurs x (I y) = x == y@@ -1604,7 +1629,7 @@ -- A chasing version of substitution.  substChase :: Subst -> Term -> Term-substChase subst t =+substChase subst@(Subst ss) t =     case chase subst t of       t@(I _) -> t       t@(C _) -> t@@ -1615,24 +1640,15 @@       F Exp [t0, G t1] ->           case substChase subst t0 of             F Exp [t0', G t1'] ->-              case mul t1' $ groupChase subst t1 of+              case mul t1' $ chaseGroup ss t1 of                 t2 | M.null t2 -> t0'                    | otherwise -> F Exp [t0', G t2]-            t -> expChase subst t t1+            t -> chaseExp subst t t1       F s u ->           F s (map (substChase subst) u)-      G t -> G $ groupChase subst t+      G t -> G $ chaseGroup ss t       t@(D _) -> t       t@(P _) -> t--expChase :: Subst -> Term -> Group -> Term-expChase subst t0 t1 =-    case groupChase subst t1 of-      t1' | M.null t1' -> t0-          | otherwise -> F Exp [t0, G t1']--groupChase :: Subst -> Group -> Group-groupChase (Subst subst) t = groupSubst subst t  destroyer :: Term -> Maybe Subst destroyer t@(G m) | isVar t =
src/CPSA/Lib/Declaration.hs view
@@ -11,7 +11,7 @@         dknon, dkpnon, dkunique, dkuniqFull, mkDecls, declsUnion, dkuniqgen,         tagDeclsTermsOnly, tagDeclsLocsOnly, declFormats, declInputFormats,         dterms, dlocs, daux, declInst, declInstAux, DeclInst, dkugenFull,-        dkabsent, declsTerms, addDeclInst, declMember,+        dkabsent, declsTerms, addDeclInst, declMember, nsdecls,         DeclInstList, Declaration, DeclInFormat(..), DeclOutFormat(..),         DeclList, declarationRoleTags, --        BasicOutFmt, MultiTermOutFmt, NullOutFmt, BasicRoleOutFmt, GeneralOutFmt,@@ -216,6 +216,8 @@  modname :: (Algebra t p g s e c, Loc l) => String -> DeclInstList t l ->            Declarations t l -> Declarations t l+modname name [] decls =+    mkDecls (filter (\(n, _) -> not (n == name) ) (dlist decls)) modname name ds decls =   case lookup name (dlist decls) of     Nothing -> mkDecls ((dlist decls) ++ [(name, ds)])@@ -256,14 +258,13 @@ declCompare dec1 dec2 = compare (fst dec1) (fst dec2)  -- Exported--- MDL: Note "Forgot t" limitation here (use of head) forgetSomeDecls :: (Algebra t p g s e c, Loc l) => Declarations t l ->-                   [(t, Declarations t l)]+                   [(Declarations t l, Declarations t l)] forgetSomeDecls decls =   concatMap delNamedDecl (map fst (dlist decls))   where     delNamedDecl name =-      [ (head $ dterms d, modname name (delete d (tagDecls name decls)) decls)+      [ (Declarations {dlist = [(name, [d])]}, modname name (delete d (tagDecls name decls)) decls)       | d <- tagDecls name decls ]  declsNub :: (Algebra t p g s e c, Loc l) => Declarations t l ->@@ -394,6 +395,14 @@     f dinst = declInstAux (map (instantiate env) $ dterms dinst)                        (map locmap $ dlocs dinst) (daux dinst) +-- Exported+nsdecls :: Declarations t l -> Set (String, Int)+nsdecls decls =+  nsdeclsloop S.empty (dlist decls)+  where+    nsdeclsloop s [] = s+    nsdeclsloop s ((tag, ds) : rest) = nsdeclsloop (S.insert (tag, length ds) s) rest+                                                   avoidTerms :: Algebra t p g s e c => Declarations t l -> Set t avoidTerms decls =   S.unions [ns, as, uos, ugs]
src/CPSA/Lib/Displayer.hs view
@@ -396,8 +396,8 @@           [S () "weakened", L () [displayNode n0, displayNode n1] ]       displayMethod ctx (Separated t) =           [S () "separated", displayOpTerm ctx t]-      displayMethod ctx (Forgot t) =-          [S () "forgot", displayOpTerm ctx t]+      displayMethod ctx (Forgot decls) = +          [S () "forgot", L () (displaySkelDeclarations ctx decls [])]  -- Terms in the operation field may contain variables not in the skeleton displayOpTerm :: Algebra t p g s e c => c -> t -> SExpr ()
src/CPSA/Lib/Entry.hs view
@@ -73,6 +73,7 @@       optFile :: Maybe FilePath, -- Nothing specifies standard output       optAlg :: String,          -- Name of the algebra       optAnalyze :: Bool,        -- False when only expanding macros+      optDoAnalyze :: Bool,      -- False when only printing inputs       optNoIsoChk :: Bool, -- True when not performing isomorphism checks       optCheckNoncesFirst :: Bool, -- True when checking nonces first       optTryOldStrandsFirst :: Bool, -- True when visiting old strands first@@ -90,6 +91,7 @@   optFile = Nothing,   optAlg = CPSA.Basic.Algebra.name,   optAnalyze = True,+  optDoAnalyze = True,   optNoIsoChk = False,   optCheckNoncesFirst = False,   optTryOldStrandsFirst = False,
src/CPSA/Lib/Main.hs view
@@ -194,6 +194,7 @@     | Depth String              -- Tree depth bound     | Margin String             -- Output line length     | Expand                    -- Expand macros only+    | NoAnalyze                 -- Don't analyze, just echo outputs     | NoIsoChk                  -- Disable isomorphism checks     | CheckNoncesFirst          -- Check nonces first     | TryOldStrandsFirst        -- Try old strands first@@ -218,6 +219,7 @@       ("set output margin (default " ++ show (optMargin defaultOptions) ++ ")"),       Option ['e'] ["expand"]   (NoArg Expand)       "expand macros only; don't analyze",+      Option ['z'] ["noanalyze"] (NoArg NoAnalyze) "don't analyze",       Option ['n'] ["noisochk"] (NoArg NoIsoChk)       "disable isomorphism checks",       Option ['c'] ["check-nonces"] (NoArg CheckNoncesFirst)@@ -277,6 +279,8 @@                   abort msg       loop (Expand : flags) opts =           loop flags $ opts { optAnalyze = False }+      loop (NoAnalyze : flags) opts =+          loop flags $ opts { optDoAnalyze = False }       loop (NoIsoChk : flags) opts =           loop flags $ opts { optNoIsoChk = True }       loop (CheckNoncesFirst : flags) opts =
src/CPSA/Lib/Reduction.hs view
@@ -125,6 +125,12 @@          [Preskel t g s e] -> Int -> IO () solve _ h [] _ =                -- Done     hClose h+solve p h (k : ks) n | (not $ optDoAnalyze p) =+    do +      wrt p h (displayProt (protocol k))+      -- Just display the preskel+      wrt p h (displayPreskel k [])+      solve p h ks n solve p h (k : ks) n =     do       wrt p h (displayProt (protocol k)) -- show protocol
src/CPSA/Lib/Strand.hs view
@@ -400,7 +400,7 @@     = Deleted Node     | Weakened Pair     | Separated t-    | Forgot t+    | Forgot (SkelDeclarations t)     deriving Show  -- The operation used to generate the preskeleteton is either new via@@ -648,6 +648,16 @@       dvars = foldl f S.empty $ declsTerms (decls k)       f s t = foldVars (flip S.insert) s t +traceBase :: Int+traceBase = 3++-- Convert a trace to a number based on its pattern of events+tracePattern :: Trace t -> Int+tracePattern [] = 1+tracePattern (In _:r) = traceBase*(tracePattern r)+tracePattern (Out _:r) = traceBase*(tracePattern r) + 1+tracePattern (Sync _:r) = traceBase*(tracePattern r) + 2                         +                           -- Isomorphism Check  -- Are two skeletons equivalent?  Two skeletons are equivalent if they@@ -673,6 +683,7 @@       gtraces :: [(Int, Trace t)],       gorderings :: [Pair],       gleadsto :: [Pair],+      gpatterns :: [Int],       gdecls :: SkelDeclarations t,       nvars :: !Int,           -- Number of variables       ntraces :: !Int,         -- Number of traces@@ -688,17 +699,21 @@            gorderings = gorderings,            gleadsto = gleadsto,            gdecls = gdecls,+           gpatterns = patterns,            nvars = length (kvars k),            ntraces = length gtraces,            norderings = length gorderings,            nleadsto = length gleadsto,-           nsndecls = nsdecls gdecls }+           nsndecls = nsds gdecls }     where       gtraces = map (\i -> (height i, trace i)) (insts k)       gorderings = orderings k       gleadsto = leadsto k       gdecls = decls k+      patterns = L.sort (map (tracePattern . trace) (insts k))+      nsds decls = [length (dknon decls), length (dkpnon decls), length (dkunique decls)] + -- Test to see if two preskeletons are isomorphic  -- First, ensure the two preskeletons have:@@ -723,6 +738,7 @@ --    nvars g == nvars g' &&  -- Wrong in DH     ntraces g == ntraces g' &&     norderings g == norderings g' &&+    gpatterns g == gpatterns g' &&     nleadsto g == nleadsto g' &&     nsndecls g == nsndecls g' &&     any (tryPerm g g') (permutations g g')@@ -1959,17 +1975,19 @@ --}  -- Exported+{- nsdecls :: Declarations t l -> [Int] nsdecls decls =   [length (dknon decls), length (dkpnon decls), length (dkunique decls)]+-}  -- Exported -- JDR: duplicate code with mkPreskel forgetSomeTerm :: Algebra t p g s e c => Preskel t g s e ->                   [Candidate t p g s e c] forgetSomeTerm k =-  [ addIdentity (k { decls = d, operation = Generalized (Forgot t) }) |-      (t, d) <- forgetSomeDecls (decls k),+  [ addIdentity (k { decls = d, operation = Generalized (Forgot dd) }) |+      (dd, d) <- forgetSomeDecls (decls k),       let insts' = insts k,       let rd = foldl addInstOrigs (declsUnion [])                (zip (nats (length insts')) insts'),
tst/Makefile view
@@ -10,18 +10,18 @@ SAS	= ../dist/build/cpsasas/cpsasas$(EXE) ANNOTATIONS = ../dist/build/cpsaannotations/cpsaannotations$(EXE) GRAPH	= ../dist/build/cpsagraph/cpsagraph$(EXE)-CPSAFLAGS = +RTS -M512m -RTS+CPSAFLAGS = +RTS -M512m -N8 -RTS  # The expected answers are in files with the .tst extension.  # Analyze protocols for shapes expecting success %.txt:	%.scm $(CPSA)-	$(CPSA) $(CPSAFLAGS) -o $@ $*.scm+	time $(CPSA) $(CPSAFLAGS) -o $@ $*.scm 	-$(DIFF) $(DIFFFLAGS) $*.tst $*.txt  # Analyze protocols for shapes expecting failure %.txt:	%.lsp $(CPSA)-	-$(CPSA) $(CPSAFLAGS) -o $@ $*.lsp+	-time $(CPSA) $(CPSAFLAGS) -o $@ $*.lsp 	-$(DIFF) $(DIFFFLAGS) $*.tst $*.txt  # Extract shapes
+ tst/aik.scm view
@@ -0,0 +1,31 @@+(herald "Anonymous identity protocol from TCG")++(defprotocol aikprot basic+  (defrole ca+    (vars (mf name) (ek akey))+    (trace (send (enc "ekc" mf ek (privk mf))))+    (non-orig (invk ek)))+  (defrole tpm+    (vars (i x mf pc name) (ek k akey) (srk skey))+    (trace (recv (cat x i (enc "ekc" mf ek (privk mf))))+      (send (cat i k x (enc "ekc" mf ek (privk mf))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    (non-orig srk (invk ek))+    (uniq-orig k (invk k)))+  (defrole pca+    (vars (i x mf pc name) (ek k akey))+    (trace (recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    (non-orig (privk mf))))++(defskeleton aikprot+  (vars (i x mf pc name) (ek k akey) (srk skey))+  (defstrand tpm 4 (mf mf) (pc pc))+  (non-orig (privk pc)))++(defskeleton aikprot+  (vars (i x mf pc name) (ek k akey) (srk skey))+  (deflistener (enc "aic" i k x (privk pc)))+  (non-orig (privk pc)))+
+ tst/aik.tst view
@@ -0,0 +1,561 @@+(herald "Anonymous identity protocol from TCG")++(comment "CPSA 3.4.0")+(comment "All input read from aik.scm")++(defprotocol aikprot basic+  (defrole ca+    (vars (mf name) (ek akey))+    (trace (send (enc "ekc" mf ek (privk mf))))+    (non-orig (invk ek)))+  (defrole tpm+    (vars (i x mf pc name) (ek k akey) (srk skey))+    (trace (recv (cat x i (enc "ekc" mf ek (privk mf))))+      (send (cat i k x (enc "ekc" mf ek (privk mf))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    (non-orig srk (invk ek))+    (uniq-orig k (invk k)))+  (defrole pca+    (vars (i x mf pc name) (ek k akey))+    (trace (recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    (non-orig (privk mf))))++(defskeleton aikprot+  (vars (mf pc i x name) (srk skey) (ek k akey))+  (defstrand tpm 4 (i i) (x x) (mf mf) (pc pc) (srk srk) (ek ek) (k k))+  (non-orig srk (invk ek) (privk pc))+  (uniq-orig k (invk k))+  (traces+    ((recv (cat x i (enc "ekc" mf ek (privk mf))))+      (send (cat i k x (enc "ekc" mf ek (privk mf))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk)))))+  (label 0)+  (unrealized (0 2))+  (origs (k (0 1)) ((invk k) (0 3)))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton aikprot+  (vars (mf pc i x mf-0 name) (srk skey) (ek k ek-0 akey))+  (defstrand tpm 4 (i i) (x x) (mf mf) (pc pc) (srk srk) (ek ek) (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-0) (pc pc) (ek ek-0) (k k))+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))+  (non-orig srk (invk ek) (privk pc) (privk mf-0))+  (uniq-orig k (invk k))+  (operation encryption-test (added-strand pca 2)+    (enc "aic" i k x (privk pc)) (0 2))+  (traces+    ((recv (cat x i (enc "ekc" mf ek (privk mf))))+      (send (cat i k x (enc "ekc" mf ek (privk mf))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-0 ek-0 (privk mf-0))))+      (send (enc (enc "aic" i k x (privk pc)) ek-0))))+  (label 1)+  (parent 0)+  (unrealized (1 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton aikprot+  (vars (mf pc i x mf-0 name) (srk skey) (ek k ek-0 akey))+  (defstrand tpm 4 (i i) (x x) (mf mf) (pc pc) (srk srk) (ek ek) (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-0) (pc pc) (ek ek-0) (k k))+  (defstrand ca 1 (mf mf-0) (ek ek-0))+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((2 0) (1 0)))+  (non-orig srk (invk ek) (invk ek-0) (privk pc) (privk mf-0))+  (uniq-orig k (invk k))+  (operation encryption-test (added-strand ca 1)+    (enc "ekc" mf-0 ek-0 (privk mf-0)) (1 0))+  (traces+    ((recv (cat x i (enc "ekc" mf ek (privk mf))))+      (send (cat i k x (enc "ekc" mf ek (privk mf))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-0 ek-0 (privk mf-0))))+      (send (enc (enc "aic" i k x (privk pc)) ek-0)))+    ((send (enc "ekc" mf-0 ek-0 (privk mf-0)))))+  (label 2)+  (parent 1)+  (unrealized (0 2))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton aikprot+  (vars (mf pc i x mf-0 name) (srk skey) (k ek akey))+  (defstrand tpm 4 (i i) (x x) (mf mf) (pc pc) (srk srk) (ek ek) (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-0) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf-0) (ek ek))+  (precedes ((0 1) (1 0)) ((1 1) (0 2)) ((2 0) (1 0)))+  (non-orig srk (invk ek) (privk pc) (privk mf-0))+  (uniq-orig k (invk k))+  (operation encryption-test (contracted (ek-0 ek))+    (enc "aic" i k x (privk pc)) (0 2)+    (enc (enc "aic" i k x (privk pc)) ek))+  (traces+    ((recv (cat x i (enc "ekc" mf ek (privk mf))))+      (send (cat i k x (enc "ekc" mf ek (privk mf))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf-0 ek (privk mf-0)))))+  (label 3)+  (parent 2)+  (unrealized)+  (shape)+  (maps ((0) ((mf mf) (pc pc) (i i) (x x) (ek ek) (k k) (srk srk))))+  (origs (k (0 1)) ((invk k) (0 3))))++(defskeleton aikprot+  (vars (mf pc i x mf-0 mf-1 name) (srk skey) (ek k ek-0 ek-1 akey))+  (defstrand tpm 4 (i i) (x x) (mf mf) (pc pc) (srk srk) (ek ek) (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-0) (pc pc) (ek ek-0) (k k))+  (defstrand ca 1 (mf mf-0) (ek ek-0))+  (defstrand pca 2 (i i) (x x) (mf mf-1) (pc pc) (ek ek-1) (k k))+  (precedes ((0 1) (1 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((2 0) (1 0))+    ((3 1) (0 2)))+  (non-orig srk (invk ek) (invk ek-0) (privk pc) (privk mf-0)+    (privk mf-1))+  (uniq-orig k (invk k))+  (operation encryption-test (added-strand pca 2)+    (enc "aic" i k x (privk pc)) (0 2)+    (enc (enc "aic" i k x (privk pc)) ek-0))+  (traces+    ((recv (cat x i (enc "ekc" mf ek (privk mf))))+      (send (cat i k x (enc "ekc" mf ek (privk mf))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-0 ek-0 (privk mf-0))))+      (send (enc (enc "aic" i k x (privk pc)) ek-0)))+    ((send (enc "ekc" mf-0 ek-0 (privk mf-0))))+    ((recv (cat i k x (enc "ekc" mf-1 ek-1 (privk mf-1))))+      (send (enc (enc "aic" i k x (privk pc)) ek-1))))+  (label 4)+  (parent 2)+  (seen 2)+  (unrealized (3 0))+  (comment "1 in cohort - 0 not yet seen"))++(comment "Nothing left to do")++(defprotocol aikprot basic+  (defrole ca+    (vars (mf name) (ek akey))+    (trace (send (enc "ekc" mf ek (privk mf))))+    (non-orig (invk ek)))+  (defrole tpm+    (vars (i x mf pc name) (ek k akey) (srk skey))+    (trace (recv (cat x i (enc "ekc" mf ek (privk mf))))+      (send (cat i k x (enc "ekc" mf ek (privk mf))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    (non-orig srk (invk ek))+    (uniq-orig k (invk k)))+  (defrole pca+    (vars (i x mf pc name) (ek k akey))+    (trace (recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    (non-orig (privk mf))))++(defskeleton aikprot+  (vars (i x pc name) (k akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (non-orig (privk pc))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc)))))+  (label 5)+  (unrealized (0 0))+  (origs)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf name) (k ek akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (precedes ((1 1) (0 0)))+  (non-orig (privk pc) (privk mf))+  (operation encryption-test (added-strand pca 2)+    (enc "aic" i k x (privk pc)) (0 0))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek))))+  (label 6)+  (parent 5)+  (unrealized (1 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf name) (k ek akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))+  (non-orig (invk ek) (privk pc) (privk mf))+  (operation encryption-test (added-strand ca 1)+    (enc "ekc" mf ek (privk mf)) (1 0))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf)))))+  (label 7)+  (parent 6)+  (unrealized (0 0))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 name) (srk skey) (k ek akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 3) (0 0)))+  (non-orig srk (invk ek) (privk pc) (privk mf))+  (uniq-orig k (invk k))+  (operation encryption-test (added-strand tpm 4)+    (enc "aic" i k x (privk pc)) (0 0)+    (enc (enc "aic" i k x (privk pc)) ek))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk)))))+  (label 8)+  (parent 7)+  (unrealized (3 2))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 name) (k ek ek-0 akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand pca 2 (i i) (x x) (mf mf-0) (pc pc) (ek ek-0) (k k))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)) ((3 1) (0 0)))+  (non-orig (invk ek) (privk pc) (privk mf) (privk mf-0))+  (operation encryption-test (added-strand pca 2)+    (enc "aic" i k x (privk pc)) (0 0)+    (enc (enc "aic" i k x (privk pc)) ek))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat i k x (enc "ekc" mf-0 ek-0 (privk mf-0))))+      (send (enc (enc "aic" i k x (privk pc)) ek-0))))+  (label 9)+  (parent 7)+  (seen 7)+  (unrealized (3 0))+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 name) (srk skey) (k ek akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (precedes ((1 1) (3 2)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 3) (0 0)))+  (non-orig srk (invk ek) (privk pc) (privk mf))+  (uniq-orig k (invk k))+  (operation encryption-test (displaced 4 1 pca 2)+    (enc "aic" i k x (privk pc)) (3 2))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk)))))+  (label 10)+  (parent 8)+  (unrealized)+  (shape)+  (maps ((0) ((i i) (x x) (pc pc) (k k))))+  (origs (k (3 1)) ((invk k) (3 3))))++(defskeleton aikprot+  (vars (i x pc mf mf-0 mf-1 name) (srk skey) (k ek ek-0 akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-1) (pc pc) (ek ek-0) (k k))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 1) (4 0))+    ((3 3) (0 0)) ((4 1) (3 2)))+  (non-orig srk (invk ek) (privk pc) (privk mf) (privk mf-1))+  (uniq-orig k (invk k))+  (operation encryption-test (added-strand pca 2)+    (enc "aic" i k x (privk pc)) (3 2))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-1 ek-0 (privk mf-1))))+      (send (enc (enc "aic" i k x (privk pc)) ek-0))))+  (label 11)+  (parent 8)+  (unrealized (4 0))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 name) (srk skey) (k ek akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)) ((2 0) (4 0)) ((3 1) (1 0))+    ((3 1) (4 0)) ((3 3) (0 0)) ((4 1) (3 2)))+  (non-orig srk (invk ek) (privk pc) (privk mf))+  (uniq-orig k (invk k))+  (operation encryption-test (displaced 5 2 ca 1)+    (enc "ekc" mf-1 ek-0 (privk mf-1)) (4 0))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek))))+  (label 12)+  (parent 11)+  (seen 10)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 mf-1 name) (srk skey) (k ek ek-0 akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-1) (pc pc) (ek ek-0) (k k))+  (defstrand ca 1 (mf mf-1) (ek ek-0))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 1) (4 0))+    ((3 3) (0 0)) ((4 1) (3 2)) ((5 0) (4 0)))+  (non-orig srk (invk ek) (invk ek-0) (privk pc) (privk mf)+    (privk mf-1))+  (uniq-orig k (invk k))+  (operation encryption-test (added-strand ca 1)+    (enc "ekc" mf-1 ek-0 (privk mf-1)) (4 0))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-1 ek-0 (privk mf-1))))+      (send (enc (enc "aic" i k x (privk pc)) ek-0)))+    ((send (enc "ekc" mf-1 ek-0 (privk mf-1)))))+  (label 13)+  (parent 11)+  (unrealized (3 2))+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 mf-1 name) (srk skey) (k ek akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-1) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf-1) (ek ek))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 1) (4 0))+    ((3 3) (0 0)) ((4 1) (3 2)) ((5 0) (4 0)))+  (non-orig srk (invk ek) (privk pc) (privk mf) (privk mf-1))+  (uniq-orig k (invk k))+  (operation encryption-test (contracted (ek-0 ek))+    (enc "aic" i k x (privk pc)) (3 2)+    (enc (enc "aic" i k x (privk pc)) ek))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-1 ek (privk mf-1))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf-1 ek (privk mf-1)))))+  (label 14)+  (parent 13)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 mf-1 name) (srk skey) (k ek ek-0 akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-1) (pc pc) (ek ek-0) (k k))+  (defstrand ca 1 (mf mf-1) (ek ek-0))+  (precedes ((1 1) (3 2)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 1) (4 0))+    ((3 3) (0 0)) ((4 1) (3 2)) ((5 0) (4 0)))+  (non-orig srk (invk ek) (invk ek-0) (privk pc) (privk mf)+    (privk mf-1))+  (uniq-orig k (invk k))+  (operation encryption-test (displaced 6 1 pca 2)+    (enc "aic" i k x (privk pc)) (3 2)+    (enc (enc "aic" i k x (privk pc)) ek-0))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-1 ek-0 (privk mf-1))))+      (send (enc (enc "aic" i k x (privk pc)) ek-0)))+    ((send (enc "ekc" mf-1 ek-0 (privk mf-1)))))+  (label 15)+  (parent 13)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 mf-1 mf-2 name) (srk skey)+    (k ek ek-0 ek-1 akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-1) (pc pc) (ek ek-0) (k k))+  (defstrand ca 1 (mf mf-1) (ek ek-0))+  (defstrand pca 2 (i i) (x x) (mf mf-2) (pc pc) (ek ek-1) (k k))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 1) (4 0))+    ((3 1) (6 0)) ((3 3) (0 0)) ((4 1) (3 2)) ((5 0) (4 0))+    ((6 1) (3 2)))+  (non-orig srk (invk ek) (invk ek-0) (privk pc) (privk mf) (privk mf-1)+    (privk mf-2))+  (uniq-orig k (invk k))+  (operation encryption-test (added-strand pca 2)+    (enc "aic" i k x (privk pc)) (3 2)+    (enc (enc "aic" i k x (privk pc)) ek-0))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-1 ek-0 (privk mf-1))))+      (send (enc (enc "aic" i k x (privk pc)) ek-0)))+    ((send (enc "ekc" mf-1 ek-0 (privk mf-1))))+    ((recv (cat i k x (enc "ekc" mf-2 ek-1 (privk mf-2))))+      (send (enc (enc "aic" i k x (privk pc)) ek-1))))+  (label 16)+  (parent 13)+  (seen 13)+  (unrealized (6 0))+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 mf-1 name) (srk skey) (k ek akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (defstrand pca 2 (i i) (x x) (mf mf-1) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf-1) (ek ek))+  (precedes ((1 0) (0 0)) ((2 1) (3 0)) ((2 3) (0 0)) ((3 1) (2 2))+    ((4 0) (3 0)))+  (non-orig srk (invk ek) (privk pc) (privk mf) (privk mf-1))+  (uniq-orig k (invk k))+  (operation generalization deleted (1 0))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((recv (cat i k x (enc "ekc" mf-1 ek (privk mf-1))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf-1 ek (privk mf-1)))))+  (label 17)+  (parent 14)+  (seen 10)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton aikprot+  (vars (i x pc mf mf-0 mf-1 name) (srk skey) (k ek ek-0 akey))+  (deflistener (enc "aic" i k x (privk pc)))+  (defstrand pca 2 (i i) (x x) (mf mf) (pc pc) (ek ek) (k k))+  (defstrand ca 1 (mf mf) (ek ek))+  (defstrand tpm 4 (i i) (x x) (mf mf-0) (pc pc) (srk srk) (ek ek)+    (k k))+  (defstrand ca 1 (mf mf-1) (ek ek-0))+  (precedes ((1 1) (3 2)) ((2 0) (1 0)) ((3 1) (1 0)) ((3 3) (0 0))+    ((4 0) (3 2)))+  (non-orig srk (invk ek) (invk ek-0) (privk pc) (privk mf)+    (privk mf-1))+  (uniq-orig k (invk k))+  (operation generalization deleted (4 0))+  (traces+    ((recv (enc "aic" i k x (privk pc)))+      (send (enc "aic" i k x (privk pc))))+    ((recv (cat i k x (enc "ekc" mf ek (privk mf))))+      (send (enc (enc "aic" i k x (privk pc)) ek)))+    ((send (enc "ekc" mf ek (privk mf))))+    ((recv (cat x i (enc "ekc" mf-0 ek (privk mf-0))))+      (send (cat i k x (enc "ekc" mf-0 ek (privk mf-0))))+      (recv (enc (enc "aic" i k x (privk pc)) ek))+      (send (cat (enc "aic" i k x (privk pc)) (enc k (invk k) srk))))+    ((send (enc "ekc" mf-1 ek-0 (privk mf-1)))))+  (label 18)+  (parent 15)+  (seen 10)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(comment "Nothing left to do")
+ tst/kerb.scm view
@@ -0,0 +1,76 @@+; Flawed and Fixed Kerberos++; In this example, the initiator is trying to send a private message+; to the responder.  Each are presumed to share a long-term private key+; with the key server, which will choose a fresh session key on request+; and encrypt it for both parties.++; A flaw exists in the protocol intentionally: the initiator will need+; confirmation that the session key is shared between the initiator and+; the partner they specified.++; This version of the protocol is not modeled properly and misses the flaw.+(defprotocol kerb-flawed basic+  (defrole init+    (vars (a b s name) (m n text) (k skey))+    (trace+       ;; Make the request+       (send (cat a b n))+       ;; Receive the encrypted key and ticket+       (recv (cat (enc k n (ltk a s)) (enc k a b (ltk b s))))+       (send (cat (enc m k) (enc k a b (ltk b s)))))+    (uniq-orig n))+  (defrole resp+    (vars (a b s name) (m text) (k skey))+    (trace+       (recv (cat (enc m k) (enc k a b (ltk b s))))))+  (defrole keyserv+    (vars (a b s name) (m n text) (k skey))+    (trace+       ;; Receive the request+       (recv (cat a b n))+       ;; Send the encrypted key and ticket+       (send (cat (enc k n (ltk a s)) (enc k a b (ltk b s)))))+    (uniq-orig k))+)++; This skeleton should be dead, even though m can leak+(defskeleton kerb-flawed+  (vars (a b s name) (m text))+  (defstrand init 3 (a a) (b b) (s s) (m m))+  (deflistener m)+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m))++; This version of the protocol is not modeled properly, with a generic variable (ticket)+(defprotocol kerb-flawed2 basic+  (defrole init+    (vars (a b s name) (ticket mesg) (m n text) (k skey))+    (trace+       ;; Make the request+       (send (cat a b n))+       ;; Receive the encrypted key and ticket+       (recv (cat (enc k n (ltk a s)) ticket))+       (send (cat (enc m k) ticket)))+    (uniq-orig n))+  (defrole resp+    (vars (a b s name) (m text) (k skey))+    (trace+       (recv (cat (enc m k) (enc k a b (ltk b s))))))+  (defrole keyserv+    (vars (a b s name) (m n text) (k skey))+    (trace+       ;; Receive the request+       (recv (cat a b n))+       ;; Send the encrypted key and ticket+       (send (cat (enc k n (ltk a s)) (enc k a b (ltk b s)))))+    (uniq-orig k))+)++; This skeleton should have a shape, demonstrating that m may be leaked.+(defskeleton kerb-flawed2+  (vars (a b s name) (m text))+  (defstrand init 3 (a a) (b b) (s s) (m m))+  (deflistener m)+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m))
+ tst/kerb.tst view
@@ -0,0 +1,186 @@+(comment "CPSA 3.4.0")+(comment "All input read from kerb.scm")++(defprotocol kerb-flawed basic+  (defrole init+    (vars (a b s name) (m n text) (k skey))+    (trace (send (cat a b n))+      (recv (cat (enc k n (ltk a s)) (enc k a b (ltk b s))))+      (send (cat (enc m k) (enc k a b (ltk b s)))))+    (uniq-orig n))+  (defrole resp+    (vars (a b s name) (m text) (k skey))+    (trace (recv (cat (enc m k) (enc k a b (ltk b s))))))+  (defrole keyserv+    (vars (a b s name) (n text) (k skey))+    (trace (recv (cat a b n))+      (send (cat (enc k n (ltk a s)) (enc k a b (ltk b s)))))+    (uniq-orig k)))++(defskeleton kerb-flawed+  (vars (m n text) (a b s name) (k skey))+  (defstrand init 3 (m m) (n n) (a a) (b b) (s s) (k k))+  (deflistener m)+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m n)+  (traces+    ((send (cat a b n))+      (recv (cat (enc k n (ltk a s)) (enc k a b (ltk b s))))+      (send (cat (enc m k) (enc k a b (ltk b s))))) ((recv m) (send m)))+  (label 0)+  (unrealized (0 1) (1 0))+  (preskeleton)+  (comment "Not a skeleton"))++(defskeleton kerb-flawed+  (vars (m n text) (a b s name) (k skey))+  (defstrand init 3 (m m) (n n) (a a) (b b) (s s) (k k))+  (deflistener m)+  (precedes ((0 2) (1 0)))+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m n)+  (traces+    ((send (cat a b n))+      (recv (cat (enc k n (ltk a s)) (enc k a b (ltk b s))))+      (send (cat (enc m k) (enc k a b (ltk b s))))) ((recv m) (send m)))+  (label 1)+  (parent 0)+  (unrealized (0 1))+  (origs (n (0 0)) (m (0 2)))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton kerb-flawed+  (vars (m n text) (a b s b-0 name) (k skey))+  (defstrand init 3 (m m) (n n) (a a) (b b) (s s) (k k))+  (deflistener m)+  (defstrand keyserv 2 (n n) (a a) (b b-0) (s s) (k k))+  (precedes ((0 0) (2 0)) ((0 2) (1 0)) ((2 1) (0 1)))+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m n k)+  (operation encryption-test (added-strand keyserv 2)+    (enc k n (ltk a s)) (0 1))+  (traces+    ((send (cat a b n))+      (recv (cat (enc k n (ltk a s)) (enc k a b (ltk b s))))+      (send (cat (enc m k) (enc k a b (ltk b s))))) ((recv m) (send m))+    ((recv (cat a b-0 n))+      (send (cat (enc k n (ltk a s)) (enc k a b-0 (ltk b-0 s))))))+  (label 2)+  (parent 1)+  (unrealized (0 1))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton kerb-flawed+  (vars (m n text) (a s b name) (k skey))+  (defstrand init 3 (m m) (n n) (a a) (b b) (s s) (k k))+  (deflistener m)+  (defstrand keyserv 2 (n n) (a a) (b b) (s s) (k k))+  (precedes ((0 0) (2 0)) ((0 2) (1 0)) ((2 1) (0 1)))+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m n k)+  (operation encryption-test (displaced 3 2 keyserv 2)+    (enc k a b-0 (ltk b-0 s)) (0 1))+  (traces+    ((send (cat a b n))+      (recv (cat (enc k n (ltk a s)) (enc k a b (ltk b s))))+      (send (cat (enc m k) (enc k a b (ltk b s))))) ((recv m) (send m))+    ((recv (cat a b n))+      (send (cat (enc k n (ltk a s)) (enc k a b (ltk b s))))))+  (label 3)+  (parent 2)+  (unrealized (1 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton kerb-flawed+  (vars (m n text) (a s b name) (k skey))+  (defstrand init 3 (m m) (n n) (a a) (b b) (s s) (k k))+  (deflistener m)+  (defstrand keyserv 2 (n n) (a a) (b b) (s s) (k k))+  (deflistener k)+  (precedes ((0 0) (2 0)) ((0 2) (1 0)) ((2 1) (0 1)) ((2 1) (3 0))+    ((3 1) (1 0)))+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m n k)+  (operation nonce-test (added-listener k) m (1 0) (enc m k))+  (traces+    ((send (cat a b n))+      (recv (cat (enc k n (ltk a s)) (enc k a b (ltk b s))))+      (send (cat (enc m k) (enc k a b (ltk b s))))) ((recv m) (send m))+    ((recv (cat a b n))+      (send (cat (enc k n (ltk a s)) (enc k a b (ltk b s)))))+    ((recv k) (send k)))+  (label 4)+  (parent 3)+  (unrealized (3 0))+  (comment "empty cohort"))++(comment "Nothing left to do")++(defprotocol kerb-flawed2 basic+  (defrole init+    (vars (a b s name) (ticket mesg) (m n text) (k skey))+    (trace (send (cat a b n)) (recv (cat (enc k n (ltk a s)) ticket))+      (send (cat (enc m k) ticket)))+    (uniq-orig n))+  (defrole resp+    (vars (a b s name) (m text) (k skey))+    (trace (recv (cat (enc m k) (enc k a b (ltk b s))))))+  (defrole keyserv+    (vars (a b s name) (n text) (k skey))+    (trace (recv (cat a b n))+      (send (cat (enc k n (ltk a s)) (enc k a b (ltk b s)))))+    (uniq-orig k)))++(defskeleton kerb-flawed2+  (vars (ticket mesg) (m n text) (a b s name) (k skey))+  (defstrand init 3 (ticket ticket) (m m) (n n) (a a) (b b) (s s) (k k))+  (deflistener m)+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m n)+  (traces+    ((send (cat a b n)) (recv (cat (enc k n (ltk a s)) ticket))+      (send (cat (enc m k) ticket))) ((recv m) (send m)))+  (label 5)+  (unrealized (0 1) (1 0))+  (preskeleton)+  (comment "Not a skeleton"))++(defskeleton kerb-flawed2+  (vars (ticket mesg) (m n text) (a b s name) (k skey))+  (defstrand init 3 (ticket ticket) (m m) (n n) (a a) (b b) (s s) (k k))+  (deflistener m)+  (precedes ((0 2) (1 0)))+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m n)+  (traces+    ((send (cat a b n)) (recv (cat (enc k n (ltk a s)) ticket))+      (send (cat (enc m k) ticket))) ((recv m) (send m)))+  (label 6)+  (parent 5)+  (unrealized (0 1))+  (origs (n (0 0)) (m (0 2)))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton kerb-flawed2+  (vars (ticket mesg) (m n text) (a b s b-0 name) (k skey))+  (defstrand init 3 (ticket ticket) (m m) (n n) (a a) (b b) (s s) (k k))+  (deflistener m)+  (defstrand keyserv 2 (n n) (a a) (b b-0) (s s) (k k))+  (precedes ((0 0) (2 0)) ((0 2) (1 0)) ((2 1) (0 1)))+  (non-orig (ltk a s) (ltk b s))+  (uniq-orig m n k)+  (operation encryption-test (added-strand keyserv 2)+    (enc k n (ltk a s)) (0 1))+  (traces+    ((send (cat a b n)) (recv (cat (enc k n (ltk a s)) ticket))+      (send (cat (enc m k) ticket))) ((recv m) (send m))+    ((recv (cat a b-0 n))+      (send (cat (enc k n (ltk a s)) (enc k a b-0 (ltk b-0 s))))))+  (label 7)+  (parent 6)+  (unrealized)+  (shape)+  (maps ((0 1) ((a a) (b b) (s s) (m m) (ticket ticket) (n n) (k k))))+  (origs (k (2 1)) (n (0 0)) (m (0 2))))++(comment "Nothing left to do")
tst/plaindh.tst view
@@ -773,7 +773,7 @@   (defstrand init 4 (n n) (h (exp (gen) y)) (x x))   (uniq-gen x)   (uniq-orig n)-  (operation generalization forgot y)+  (operation generalization forgot ((absent (y (exp (gen) x)))))   (traces     ((send (exp (gen) x)) (recv (exp (gen) y))       (send (enc n (exp (gen) (mul y x)))) (recv n)))@@ -3311,7 +3311,7 @@   (precur (1 0))   (uniq-gen x)   (uniq-orig n)-  (operation generalization forgot y)+  (operation generalization forgot ((absent (y (exp (gen) (mul w x))))))   (traces     ((send (exp (gen) x)) (recv (exp (gen) (mul y w)))       (send (enc n (exp (gen) (mul y w x)))) (recv n))
+ tst/reflect.scm view
@@ -0,0 +1,32 @@+(herald reflect)++;; A simple protocol vulnerable to a reflection attack++(defprotocol reflect basic+  (defrole init+    (vars (a b akey))+    (trace+     (send (enc b (invk a)))+     (recv (enc a (invk b)))))+  (defrole resp+    (vars (a b akey))+    (trace+     (recv (enc b (invk a)))+     (send (enc a (invk b))))))++;; Expect two shapes++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (non-orig (invk a) (invk b)))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (non-orig (invk a) (invk b)))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b (invk b)))+  (non-orig (invk a) b))
+ tst/reflect.tst view
@@ -0,0 +1,482 @@+(herald reflect)++(comment "CPSA 3.4.0")+(comment "All input read from reflect.scm")++(defprotocol reflect basic+  (defrole init+    (vars (a b akey))+    (trace (send (enc b (invk a))) (recv (enc a (invk b)))))+  (defrole resp+    (vars (a b akey))+    (trace (recv (enc b (invk a))) (send (enc a (invk b))))))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (non-orig (invk a) (invk b))+  (traces ((recv (enc b (invk a)))))+  (label 0)+  (unrealized (0 0))+  (origs)+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand init 1 (a a) (b b))+  (precedes ((1 0) (0 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand init 1) (enc b (invk a))+    (0 0))+  (traces ((recv (enc b (invk a)))) ((send (enc b (invk a)))))+  (label 1)+  (parent 0)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b))))+  (origs))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (precedes ((1 1) (0 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand resp 2) (enc b (invk a))+    (0 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc a (invk b))) (send (enc b (invk a)))))+  (label 2)+  (parent 0)+  (unrealized (1 0))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand init 1 (a b) (b a))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand init 1) (enc a (invk b))+    (1 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((send (enc a (invk b)))))+  (label 3)+  (parent 2)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b))))+  (origs))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand resp 2 (a a) (b b))+  (precedes ((1 1) (0 0)) ((2 1) (1 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand resp 2) (enc a (invk b))+    (1 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b)))))+  (label 4)+  (parent 2)+  (unrealized (2 0))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand resp 2 (a a) (b b))+  (defstrand init 1 (a a) (b b))+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 0) (2 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand init 1) (enc b (invk a))+    (2 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((send (enc b (invk a)))))+  (label 5)+  (parent 4)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand resp 2 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand resp 2) (enc b (invk a))+    (2 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((recv (enc a (invk b))) (send (enc b (invk a)))))+  (label 6)+  (parent 4)+  (seen 4)+  (unrealized (3 0))+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a a) (b b))+  (defstrand init 1 (a a) (b b))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))+  (non-orig (invk a) (invk b))+  (operation generalization deleted (1 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((send (enc b (invk a)))))+  (label 7)+  (parent 5)+  (seen 1)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(comment "Nothing left to do")++(defprotocol reflect basic+  (defrole init+    (vars (a b akey))+    (trace (send (enc b (invk a))) (recv (enc a (invk b)))))+  (defrole resp+    (vars (a b akey))+    (trace (recv (enc b (invk a))) (send (enc a (invk b))))))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (non-orig (invk a) (invk b))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b)))))+  (label 8)+  (unrealized (0 1))+  (origs)+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton reflect+  (vars (b akey))+  (defstrand init 2 (a b) (b b))+  (non-orig (invk b))+  (operation encryption-test (displaced 1 0 init 1) (enc a (invk b))+    (0 1))+  (traces ((send (enc b (invk b))) (recv (enc b (invk b)))))+  (label 9)+  (parent 8)+  (unrealized)+  (shape)+  (maps ((0) ((a b) (b b))))+  (origs))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (defstrand init 1 (a b) (b a))+  (precedes ((1 0) (0 1)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand init 1) (enc a (invk b))+    (0 1))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))+    ((send (enc a (invk b)))))+  (label 10)+  (parent 8)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b))))+  (origs))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (defstrand resp 2 (a a) (b b))+  (precedes ((1 1) (0 1)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand resp 2) (enc a (invk b))+    (0 1))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))+    ((recv (enc b (invk a))) (send (enc a (invk b)))))+  (label 11)+  (parent 8)+  (unrealized (1 0))+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (defstrand resp 2 (a a) (b b))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (displaced 2 0 init 1) (enc b (invk a))+    (1 0))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))+    ((recv (enc b (invk a))) (send (enc a (invk b)))))+  (label 12)+  (parent 11)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b))))+  (origs))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (defstrand resp 2 (a a) (b b))+  (defstrand init 1 (a a) (b b))+  (precedes ((1 1) (0 1)) ((2 0) (1 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand init 1) (enc b (invk a))+    (1 0))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((send (enc b (invk a)))))+  (label 13)+  (parent 11)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b))))+  (origs))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (defstrand resp 2 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (precedes ((1 1) (0 1)) ((2 1) (1 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand resp 2) (enc b (invk a))+    (1 0))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((recv (enc a (invk b))) (send (enc b (invk a)))))+  (label 14)+  (parent 11)+  (unrealized (2 0))+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton reflect+  (vars (b akey))+  (defstrand init 2 (a b) (b b))+  (defstrand resp 2 (a b) (b b))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (non-orig (invk b))+  (operation encryption-test (displaced 3 0 init 1) (enc a (invk b))+    (2 0))+  (traces ((send (enc b (invk b))) (recv (enc b (invk b))))+    ((recv (enc b (invk b))) (send (enc b (invk b)))))+  (label 15)+  (parent 14)+  (seen 9)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (defstrand resp 2 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand init 1 (a b) (b a))+  (precedes ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand init 1) (enc a (invk b))+    (2 0))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((send (enc a (invk b)))))+  (label 16)+  (parent 14)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (defstrand resp 2 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand resp 2 (a a) (b b))+  (precedes ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand resp 2) (enc a (invk b))+    (2 0))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b)))))+  (label 17)+  (parent 14)+  (seen 14)+  (unrealized (3 0))+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand init 2 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand init 1 (a b) (b a))+  (precedes ((1 1) (0 1)) ((2 0) (1 0)))+  (non-orig (invk a) (invk b))+  (operation generalization deleted (1 0))+  (traces ((send (enc b (invk a))) (recv (enc a (invk b))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((send (enc a (invk b)))))+  (label 18)+  (parent 16)+  (seen 10)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(comment "Nothing left to do")++(defprotocol reflect basic+  (defrole init+    (vars (a b akey))+    (trace (send (enc b (invk a))) (recv (enc a (invk b)))))+  (defrole resp+    (vars (a b akey))+    (trace (recv (enc b (invk a))) (send (enc a (invk b))))))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b (invk b)))+  (non-orig b (invk a))+  (traces ((recv (enc (invk b) (invk a)))))+  (label 19)+  (unrealized (0 0))+  (origs)+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b (invk b)))+  (defstrand init 1 (a a) (b (invk b)))+  (precedes ((1 0) (0 0)))+  (non-orig b (invk a))+  (operation encryption-test (added-strand init 1)+    (enc (invk b) (invk a)) (0 0))+  (traces ((recv (enc (invk b) (invk a))))+    ((send (enc (invk b) (invk a)))))+  (label 20)+  (parent 19)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b))))+  (origs))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b (invk b)))+  (defstrand resp 2 (a (invk b)) (b a))+  (precedes ((1 1) (0 0)))+  (non-orig b (invk a))+  (operation encryption-test (added-strand resp 2)+    (enc (invk b) (invk a)) (0 0))+  (traces ((recv (enc (invk b) (invk a))))+    ((recv (enc a b)) (send (enc (invk b) (invk a)))))+  (label 21)+  (parent 19)+  (unrealized (1 0))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton reflect+  (vars (a a-0 akey))+  (defstrand resp 1 (a a) (b a-0))+  (defstrand resp 2 (a a-0) (b a))+  (defstrand init 1 (a a-0) (b a))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))+  (non-orig (invk a) (invk a-0))+  (operation encryption-test (added-strand init 1) (enc a (invk a-0))+    (1 0))+  (traces ((recv (enc a-0 (invk a))))+    ((recv (enc a (invk a-0))) (send (enc a-0 (invk a))))+    ((send (enc a (invk a-0)))))+  (label 22)+  (parent 21)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b (invk a-0)))))+  (origs))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand resp 2 (a a) (b b))+  (precedes ((1 1) (0 0)) ((2 1) (1 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand resp 2) (enc a (invk b))+    (1 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b)))))+  (label 23)+  (parent 21)+  (unrealized (2 0))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand resp 2 (a a) (b b))+  (defstrand init 1 (a a) (b b))+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 0) (2 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand init 1) (enc b (invk a))+    (2 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((send (enc b (invk a)))))+  (label 24)+  (parent 23)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (defstrand resp 2 (a a) (b b))+  (defstrand resp 2 (a b) (b a))+  (precedes ((1 1) (0 0)) ((2 1) (1 0)) ((3 1) (2 0)))+  (non-orig (invk a) (invk b))+  (operation encryption-test (added-strand resp 2) (enc b (invk a))+    (2 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc a (invk b))) (send (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((recv (enc a (invk b))) (send (enc b (invk a)))))+  (label 25)+  (parent 23)+  (seen 23)+  (unrealized (3 0))+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton reflect+  (vars (a b akey))+  (defstrand resp 1 (a a) (b b))+  (defstrand resp 2 (a a) (b b))+  (defstrand init 1 (a a) (b b))+  (precedes ((1 1) (0 0)) ((2 0) (1 0)))+  (non-orig (invk a) (invk b))+  (operation generalization deleted (1 0))+  (traces ((recv (enc b (invk a))))+    ((recv (enc b (invk a))) (send (enc a (invk b))))+    ((send (enc b (invk a)))))+  (label 26)+  (parent 24)+  (seen 20)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(comment "Nothing left to do")
+ tst/station.scm view
@@ -0,0 +1,74 @@+; Station-to-station++; This is an authenticated form of a Diffie-Hellman key exchange.++; The file contains two different models of the station-to-station+; protocol.  In the first, an assumption is made that *any* initiator+; or responder properly picks a fresh random exponent and does not+; allow it to be obtained by the adversary.++; In the second, we do not include this assumption, and as a result,+; less can be guaranteed.++(herald "Station-to-station protocol" (algebra diffie-hellman))++(defprotocol station-to-station diffie-hellman+  (defrole init+    (vars (x expn) (h base) (a b name))+    (trace+     (send (exp (gen) x))+     (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+     (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))+    (uniq-gen x))+  (defrole resp+    (vars (y expn) (h base) (a b name))+    (trace+     (recv h)+     (send (cat (exp (gen) y) (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+     (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    (uniq-gen y))+)++(defskeleton station-to-station+  (vars (a b name))+  (defstrand init 3 (a a) (b b))+  (non-orig (privk b) (privk a))+)++(defskeleton station-to-station+  (vars (a b name))+  (defstrand resp 3 (a a) (b b))+  (non-orig (privk a) (privk b))+)++(defprotocol station-weak diffie-hellman+  (defrole weak-init+    (vars (x expn) (h base) (a b name))+    (trace+     (send (exp (gen) x))+     (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+     (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))+  )+  (defrole weak-resp+    (vars (y expn) (h base) (a b name))+    (trace+     (recv h)+     (send (cat (exp (gen) y) (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+     (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    (absent (y h))+    )+)++(defskeleton station-weak+  (vars (a b name) (x expn))+  (defstrand weak-init 3 (a a) (b b) (x x))+  (uniq-gen x)+  (non-orig (privk b) (privk a))+)++(defskeleton station-weak+  (vars (a b name) (y expn))+  (defstrand weak-resp 3 (a a) (b b) (y y))+  (uniq-gen y)+  (non-orig (privk a) (privk b))+)
+ tst/station.tst view
@@ -0,0 +1,5262 @@+(herald "Station-to-station protocol" (algebra diffie-hellman))++(comment "CPSA 3.4.0")+(comment "All input read from station.scm")++(defprotocol station-to-station diffie-hellman+  (defrole init+    (vars (x expn) (h base) (a b name))+    (trace (send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))+    (uniq-gen x))+  (defrole resp+    (vars (y expn) (h base) (a b name))+    (trace (recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    (uniq-gen y)+    (absent (y h))))++(defskeleton station-to-station+  (vars (a b name) (h base) (x expn))+  (defstrand init 3 (a a) (b b) (h h) (x x))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (traces+    ((send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))))+  (label 0)+  (unrealized (0 1))+  (origs)+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (1 1)) ((1 2) (0 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x x-0)+  (operation encryption-test (added-strand init 3)+    (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+      (exp (gen) (mul x x-0))) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 1)+  (parent 0)+  (unrealized (1 1))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (uniq-gen x y)+  (operation encryption-test (added-strand resp 2)+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+      (exp (gen) (mul x y))) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 2)+  (parent 0)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b) (x x) (h (exp (gen) y)))))+  (origs))++(defskeleton station-to-station+  (vars (a b name) (h base) (x expn))+  (defstrand init 3 (a a) (b b) (h h) (x x))+  (deflistener (exp h x))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation encryption-test (added-listener (exp h x))+    (enc (enc h (exp (gen) x) (privk b)) (exp h x)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))+    ((recv (exp h x)) (send (exp h x))))+  (label 3)+  (parent 0)+  (unrealized (0 1) (1 0))+  (comment "5 in cohort - 5 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((1 0) (2 0)) ((1 2) (0 1)) ((2 1) (1 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x x-0)+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))+    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+      (exp (gen) (mul x x-0))) (1 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))+  (label 4)+  (parent 1)+  (unrealized (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) (rec x))) (x x))+  (deflistener (gen))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation nonce-test (contracted (h (exp (gen) (rec x)))) (gen)+    (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (rec x))+          (enc (enc (exp (gen) (rec x)) (exp (gen) x) (privk b))+            (gen))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (rec x)) (privk a)) (gen))))+    ((recv (gen)) (send (gen))))+  (label 5)+  (parent 3)+  (unrealized (0 1))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b name) (x expn))+  (defstrand init 3 (a a) (b b) (h (gen)) (x x))+  (deflistener (exp (gen) x))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation nonce-test (displaced 2 0 init 1) (exp (gen) x-0) (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (gen)+          (enc (enc (gen) (exp (gen) x) (privk b)) (exp (gen) x))))+      (send (enc (enc (exp (gen) x) (gen) (privk a)) (exp (gen) x))))+    ((recv (exp (gen) x)) (send (exp (gen) x))))+  (label 6)+  (parent 3)+  (unrealized (0 1))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) x-0))) (x x))+  (deflistener (exp (gen) x-0))+  (defstrand init 1 (x x-0))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 0) (1 0)))+  (non-orig (privk a) (privk b))+  (uniq-gen x x-0)+  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) x-0))+          (enc+            (enc (exp (gen) (mul (rec x) x-0)) (exp (gen) x) (privk b))+            (exp (gen) x-0))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) x-0)) (privk a))+          (exp (gen) x-0))))+    ((recv (exp (gen) x-0)) (send (exp (gen) x-0)))+    ((send (exp (gen) x-0))))+  (label 7)+  (parent 3)+  (unrealized (0 1))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (h base) (x y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) y))) (x x))+  (deflistener (exp (gen) y))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (1 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (uniq-gen x y)+  (operation nonce-test (added-strand resp 2) (exp (gen) y) (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) y))+          (enc (enc (exp (gen) (mul (rec x) y)) (exp (gen) x) (privk b))+            (exp (gen) y))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) y)) (privk a))+          (exp (gen) y)))) ((recv (exp (gen) y)) (send (exp (gen) y)))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))+  (label 8)+  (parent 3)+  (unrealized (0 1))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b name) (h base) (x expn) (w expr))+  (defstrand init 3 (a a) (b b) (h h) (x x))+  (deflistener (exp h x))+  (deflistener (cat (exp h (mul x (rec w))) w))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (precur (2 0))+  (operation nonce-test (added-listener (cat (exp h (mul x (rec w))) w))+    (exp h x) (1 0))+  (traces+    ((send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))+    ((recv (exp h x)) (send (exp h x)))+    ((recv (cat (exp h (mul x (rec w))) w))+      (send (cat (exp h (mul x (rec w))) w))))+  (label 9)+  (parent 3)+  (unrealized (0 1) (2 0))+  (comment "4 in cohort - 4 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn) (w expr))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) (mul x x-0 (rec w))) w))+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))+    ((3 1) (2 0)))+  (non-orig (privk a) (privk b))+  (uniq-gen x x-0)+  (precur (3 0))+  (operation nonce-test+    (added-listener (cat (exp (gen) (mul x x-0 (rec w))) w))+    (exp (gen) (mul x x-0)) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) (mul x x-0 (rec w))) w))+      (send (cat (exp (gen) (mul x x-0 (rec w))) w))))+  (label 10)+  (parent 4)+  (unrealized (3 0))+  (comment "5 in cohort - 5 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x expn) (w expr))+  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w))) (x x))+  (deflistener (exp (gen) w))+  (deflistener (cat (gen) w))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (precur (2 0))+  (operation nonce-test (contracted (h (exp (gen) (mul (rec x) w))))+    (gen) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) w))+          (enc (enc (exp (gen) (mul (rec x) w)) (exp (gen) x) (privk b))+            (exp (gen) w))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) w)) (privk a))+          (exp (gen) w)))) ((recv (exp (gen) w)) (send (exp (gen) w)))+    ((recv (cat (gen) w)) (send (cat (gen) w))))+  (label 11)+  (parent 9)+  (unrealized (0 1))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (w expr) (x expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) w)) (x x))+  (deflistener (exp (gen) (mul w x)))+  (deflistener (cat (exp (gen) x) w))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (displaced 3 0 init 1) (exp (gen) x-0) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) w)+          (enc (enc (exp (gen) w) (exp (gen) x) (privk b))+            (exp (gen) (mul w x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) w) (privk a))+          (exp (gen) (mul w x)))))+    ((recv (exp (gen) (mul w x))) (send (exp (gen) (mul w x))))+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))+  (label 12)+  (parent 9)+  (unrealized (0 1))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x expn) (w expr) (x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w x-0)))+    (x x))+  (deflistener (exp (gen) (mul w x-0)))+  (deflistener (cat (exp (gen) x-0) w))+  (defstrand init 1 (x x-0))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) w x-0))+          (enc+            (enc (exp (gen) (mul (rec x) w x-0)) (exp (gen) x)+              (privk b)) (exp (gen) (mul w x-0)))))+      (send+        (enc+          (enc (exp (gen) x) (exp (gen) (mul (rec x) w x-0)) (privk a))+          (exp (gen) (mul w x-0)))))+    ((recv (exp (gen) (mul w x-0))) (send (exp (gen) (mul w x-0))))+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))+    ((send (exp (gen) x-0))))+  (label 13)+  (parent 9)+  (unrealized (0 1))+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (h base) (x expn) (w expr) (y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w y))) (x x))+  (deflistener (exp (gen) (mul w y)))+  (deflistener (cat (exp (gen) y) w))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y)+  (operation nonce-test (added-strand resp 2) (exp (gen) y) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) w y))+          (enc+            (enc (exp (gen) (mul (rec x) w y)) (exp (gen) x) (privk b))+            (exp (gen) (mul w y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) w y)) (privk a))+          (exp (gen) (mul w y)))))+    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))+  (label 14)+  (parent 9)+  (unrealized (0 1))+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))+    ((3 1) (2 0)))+  (non-orig (privk a) (privk b))+  (uniq-gen x x-0)+  (precur (3 0))+  (operation nonce-test (contracted (x-1 x) (x-2 x-0) (w (mul x x-0)))+    (gen) (3 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0)))))+  (label 15)+  (parent 10)+  (unrealized (2 0) (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x)) (x x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))+    ((3 1) (2 0)))+  (non-orig (privk a) (privk b))+  (precur (3 0))+  (uniq-gen x x-0)+  (operation nonce-test (displaced 4 0 init 1) (exp (gen) x-1) (3 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 16)+  (parent 10)+  (unrealized (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))+    ((3 1) (2 0)))+  (non-orig (privk a) (privk b))+  (precur (3 0))+  (uniq-gen x x-0)+  (operation nonce-test (displaced 4 1 init 1) (exp (gen) x-1) (3 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 17)+  (parent 10)+  (unrealized (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+  (defstrand init 1 (x x-1))+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))+    ((3 1) (2 0)) ((4 0) (3 0)))+  (non-orig (privk a) (privk b))+  (precur (3 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test (added-strand init 1) (exp (gen) x-1) (3 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+      (send (cat (exp (gen) x-1) (mul x x-0 (rec x-1)))))+    ((send (exp (gen) x-1))))+  (label 18)+  (parent 10)+  (unrealized (2 0) (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x x-0 y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x x-0 (rec y))))+  (defstrand resp 2 (b b-1) (h h) (y y))+  (precedes ((0 0) (3 0)) ((1 0) (3 0)) ((1 2) (0 1)) ((2 1) (1 1))+    ((3 1) (2 0)) ((4 1) (3 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (3 0))+  (uniq-gen x x-0 y)+  (operation nonce-test (added-strand resp 2) (exp (gen) y) (3 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x x-0 (rec y))))+      (send (cat (exp (gen) y) (mul x x-0 (rec y)))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-1)) (exp h y))))))+  (label 19)+  (parent 10)+  (unrealized (2 0) (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0)+  (operation encryption-test (added-strand init 3)+    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 20)+  (parent 11)+  (unrealized (1 0) (2 0) (3 1))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (gen) (mul x y)))+  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y)+  (operation encryption-test (added-strand resp 2)+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (gen) (mul x y))) (send (cat (gen) (mul x y))))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 21)+  (parent 11)+  (unrealized (1 0) (2 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0)+  (operation encryption-test (added-strand init 3)+    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 22)+  (parent 12)+  (unrealized (2 0) (3 1))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) x) y))+  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y)+  (operation encryption-test (added-strand resp 2)+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y)))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 23)+  (parent 12)+  (unrealized (2 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0)+  (operation encryption-test (displaced 3 4 init 3)+    (enc (exp (gen) x-1) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 24)+  (parent 13)+  (unrealized (2 0) (3 1))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))+  (deflistener (exp (gen) (mul x x-1)))+  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+  (defstrand init 1 (x x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))+  (precedes ((0 0) (2 0)) ((0 0) (4 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 0) (2 0)) ((4 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0 x-1)+  (operation encryption-test (added-strand init 3)+    (enc (exp (gen) x-1) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x x-1)))))+    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))+    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))+    ((send (exp (gen) x-0)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-1))))))+  (label 25)+  (parent 13)+  (unrealized (1 0) (2 0) (4 1))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x x-0 y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) y)))+  (defstrand init 1 (x x-0))+  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0))+    ((4 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0 y)+  (operation encryption-test (added-strand resp 2)+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) y)))+      (send (cat (exp (gen) x-0) (mul x (rec x-0) y))))+    ((send (exp (gen) x-0)))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 26)+  (parent 13)+  (unrealized (1 0) (2 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x y x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (2 0)) ((0 0) (4 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 0) (2 0)) ((4 2) (0 1)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y x-0)+  (operation encryption-test (added-strand init 3)+    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))+      (send (cat (exp (gen) y) (mul x (rec y) x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 27)+  (parent 14)+  (unrealized (1 0) (2 0) (4 1))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y)+  (operation encryption-test (displaced 4 3 resp 2)+    (enc (exp (gen) y-0) (exp (gen) x) (privk b-0)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 28)+  (parent 14)+  (unrealized (2 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (h base) (x y y-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) y-0)) (x x))+  (deflistener (exp (gen) (mul x y-0)))+  (deflistener (cat (exp (gen) y) (mul x (rec y) y-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand resp 2 (b b) (h (exp (gen) x)) (y y-0))+  (precedes ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0))+    ((4 1) (2 0)))+  (absent (y-0 (exp (gen) x)) (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y y-0)+  (operation encryption-test (added-strand resp 2)+    (enc (exp (gen) y-0) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x y-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y-0) (privk a))+          (exp (gen) (mul x y-0)))))+    ((recv (exp (gen) (mul x y-0))) (send (exp (gen) (mul x y-0))))+    ((recv (cat (exp (gen) y) (mul x (rec y) y-0)))+      (send (cat (exp (gen) y) (mul x (rec y) y-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x y-0)))))))+  (label 29)+  (parent 14)+  (unrealized (1 0) (2 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0)+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))+    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+      (exp (gen) (mul x x-0))) (3 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))+  (label 30)+  (parent 20)+  (unrealized (1 0) (2 0) (4 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0)+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))+    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+      (exp (gen) (mul x x-0))) (3 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))+  (label 31)+  (parent 22)+  (unrealized (2 0) (4 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (4 0)) ((3 2) (0 1)) ((4 1) (3 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0)+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))+    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+      (exp (gen) (mul x x-0))) (3 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))+  (label 32)+  (parent 24)+  (unrealized (2 0) (4 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))+  (deflistener (exp (gen) (mul x x-1)))+  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+  (defstrand init 1 (x x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))+  (deflistener (exp (gen) (mul x x-1)))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (5 0)) ((4 2) (0 1))+    ((5 1) (4 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x x-0 x-1)+  (operation encryption-test (added-listener (exp (gen) (mul x x-1)))+    (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))+      (exp (gen) (mul x x-1))) (4 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x x-1)))))+    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))+    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))+    ((send (exp (gen) x-0)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-1)))))+    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1)))))+  (label 33)+  (parent 25)+  (unrealized (1 0) (2 0) (5 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x y x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (5 0)) ((4 2) (0 1))+    ((5 1) (4 1)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y x-0)+  (operation encryption-test (added-listener (exp (gen) (mul x x-0)))+    (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+      (exp (gen) (mul x x-0))) (4 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))+      (send (cat (exp (gen) y) (mul x (rec y) x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0)))))+  (label 34)+  (parent 27)+  (unrealized (1 0) (2 0) (5 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn) (w expr))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) (mul x x-0 (rec w))) w))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test+    (added-listener (cat (exp (gen) (mul x x-0 (rec w))) w))+    (exp (gen) (mul x x-0)) (4 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) (mul x x-0 (rec w))) w))+      (send (cat (exp (gen) (mul x x-0 (rec w))) w))))+  (label 35)+  (parent 30)+  (unrealized (1 0) (2 0) (5 0))+  (comment "5 in cohort - 5 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn) (w expr))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) (mul x x-0 (rec w))) w))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test+    (added-listener (cat (exp (gen) (mul x x-0 (rec w))) w))+    (exp (gen) (mul x x-0)) (4 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) (mul x x-0 (rec w))) w))+      (send (cat (exp (gen) (mul x x-0 (rec w))) w))))+  (label 36)+  (parent 31)+  (unrealized (2 0) (5 0))+  (comment "5 in cohort - 5 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn) (w expr))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) (mul x x-0 (rec w))) w))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test+    (added-listener (cat (exp (gen) (mul x x-0 (rec w))) w))+    (exp (gen) (mul x x-0)) (4 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) (mul x x-0 (rec w))) w))+      (send (cat (exp (gen) (mul x x-0 (rec w))) w))))+  (label 37)+  (parent 32)+  (unrealized (2 0) (5 0))+  (comment "5 in cohort - 5 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn) (w expr))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))+  (deflistener (exp (gen) (mul x x-1)))+  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+  (defstrand init 1 (x x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))+  (deflistener (exp (gen) (mul x x-1)))+  (deflistener (cat (exp (gen) (mul x x-1 (rec w))) w))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test+    (added-listener (cat (exp (gen) (mul x x-1 (rec w))) w))+    (exp (gen) (mul x x-1)) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x x-1)))))+    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))+    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))+    ((send (exp (gen) x-0)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-1)))))+    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))+    ((recv (cat (exp (gen) (mul x x-1 (rec w))) w))+      (send (cat (exp (gen) (mul x x-1 (rec w))) w))))+  (label 38)+  (parent 33)+  (unrealized (1 0) (2 0) (6 0))+  (comment "6 in cohort - 6 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x y x-0 expn) (w expr))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) (mul x x-0 (rec w))) w))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x y x-0)+  (operation nonce-test+    (added-listener (cat (exp (gen) (mul x x-0 (rec w))) w))+    (exp (gen) (mul x x-0)) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))+      (send (cat (exp (gen) y) (mul x (rec y) x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) (mul x x-0 (rec w))) w))+      (send (cat (exp (gen) (mul x x-0 (rec w))) w))))+  (label 39)+  (parent 34)+  (unrealized (1 0) (2 0) (6 0))+  (comment "6 in cohort - 6 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (contracted (x-1 x) (x-2 x-0) (w (mul x x-0)))+    (gen) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0)))))+  (label 40)+  (parent 35)+  (unrealized (1 0) (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (displaced 6 0 init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 41)+  (parent 35)+  (unrealized (1 0) (2 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (displaced 6 3 init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 42)+  (parent 35)+  (unrealized (1 0) (2 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+  (defstrand init 1 (x x-1))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)) ((6 0) (5 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test (added-strand init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+      (send (cat (exp (gen) x-1) (mul x x-0 (rec x-1)))))+    ((send (exp (gen) x-1))))+  (label 43)+  (parent 35)+  (unrealized (1 0) (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x x-0 y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x x-0 (rec y))))+  (defstrand resp 2 (b b-1) (h h) (y y))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)) ((6 1) (5 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0 y)+  (operation nonce-test (added-strand resp 2) (exp (gen) y) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x x-0 (rec y))))+      (send (cat (exp (gen) y) (mul x x-0 (rec y)))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-1)) (exp h y))))))+  (label 44)+  (parent 35)+  (unrealized (1 0) (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (contracted (x-1 x) (x-2 x-0) (w (mul x x-0)))+    (gen) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0)))))+  (label 45)+  (parent 36)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (displaced 6 0 init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 46)+  (parent 36)+  (unrealized (2 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (displaced 6 3 init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 47)+  (parent 36)+  (unrealized (2 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+  (defstrand init 1 (x x-1))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)) ((6 0) (5 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test (added-strand init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+      (send (cat (exp (gen) x-1) (mul x x-0 (rec x-1)))))+    ((send (exp (gen) x-1))))+  (label 48)+  (parent 36)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x x-0 y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x x-0 (rec y))))+  (defstrand resp 2 (b b-1) (h h) (y y))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)) ((6 1) (5 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0 y)+  (operation nonce-test (added-strand resp 2) (exp (gen) y) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x x-0 (rec y))))+      (send (cat (exp (gen) y) (mul x x-0 (rec y)))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-1)) (exp h y))))))+  (label 49)+  (parent 36)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (contracted (x-1 x) (x-2 x-0) (w (mul x x-0)))+    (gen) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0)))))+  (label 50)+  (parent 37)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (displaced 6 0 init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 51)+  (parent 37)+  (unrealized (2 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0)+  (operation nonce-test (displaced 6 3 init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 52)+  (parent 37)+  (unrealized (2 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+  (defstrand init 1 (x x-1))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)) ((6 0) (5 0)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test (added-strand init 1) (exp (gen) x-1) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+      (send (cat (exp (gen) x-1) (mul x x-0 (rec x-1)))))+    ((send (exp (gen) x-1))))+  (label 53)+  (parent 37)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x x-0 y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x x-0 (rec y))))+  (defstrand resp 2 (b b-1) (h h) (y y))+  (precedes ((0 0) (2 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (5 0)) ((3 2) (0 1)) ((4 1) (3 1))+    ((5 1) (4 0)) ((6 1) (5 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x x-0 y)+  (operation nonce-test (added-strand resp 2) (exp (gen) y) (5 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x x-0 (rec y))))+      (send (cat (exp (gen) y) (mul x x-0 (rec y)))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-1)) (exp h y))))))+  (label 54)+  (parent 37)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x-0))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+  (defstrand init 1 (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-0)) (x x-1))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (gen) (mul x-0 x-1)))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test+    (contracted (x-2 x-0) (x-3 x-1) (w (mul x-0 x-1))) (gen) (6 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+      (send (cat (exp (gen) x) (mul (rec x) x-0 x-1))))+    ((send (exp (gen) x)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (gen) (mul x-0 x-1))) (send (cat (gen) (mul x-0 x-1)))))+  (label 55)+  (parent 38)+  (unrealized (1 0) (2 0) (5 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x-1))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+  (defstrand init 1 (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-1)) (x x-0))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) x-1) x-0))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test (displaced 7 0 init 1) (exp (gen) x-2) (6 0))+  (traces+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk b))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+      (send (cat (exp (gen) x) (mul (rec x) x-0 x-1))))+    ((send (exp (gen) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk b))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) x-1) x-0)) (send (cat (exp (gen) x-1) x-0))))+  (label 56)+  (parent 38)+  (unrealized (1 0) (2 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+  (defstrand init 1 (x x-1))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 0) (6 0)) ((4 0) (2 0)) ((4 0) (6 0))+    ((4 2) (0 1)) ((5 1) (4 1)) ((6 1) (5 0)))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test (displaced 7 3 init 1) (exp (gen) x-2) (6 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+      (send (cat (exp (gen) x-1) (mul x x-0 (rec x-1)))))+    ((send (exp (gen) x-1)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+      (send (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))))+  (label 57)+  (parent 38)+  (unrealized (1 0) (2 0) (5 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x-0))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+  (defstrand init 1 (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-0)) (x x-1))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) x-1) x-0))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x x-0 x-1)+  (operation nonce-test (displaced 7 4 init 1) (exp (gen) x-2) (6 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+      (send (cat (exp (gen) x) (mul (rec x) x-0 x-1))))+    ((send (exp (gen) x)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) x-1) x-0)) (send (cat (exp (gen) x-1) x-0))))+  (label 58)+  (parent 38)+  (unrealized (1 0) (2 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x x-0 x-1 x-2 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x-0))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+  (defstrand init 1 (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-0)) (x x-1))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) x-2) (mul x-0 x-1 (rec x-2))))+  (defstrand init 1 (x x-2))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)) ((7 0) (6 0)))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x x-0 x-1 x-2)+  (operation nonce-test (added-strand init 1) (exp (gen) x-2) (6 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+      (send (cat (exp (gen) x) (mul (rec x) x-0 x-1))))+    ((send (exp (gen) x)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) x-2) (mul x-0 x-1 (rec x-2))))+      (send (cat (exp (gen) x-2) (mul x-0 x-1 (rec x-2)))))+    ((send (exp (gen) x-2))))+  (label 59)+  (parent 38)+  (unrealized (1 0) (2 0) (5 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x x-0 x-1 y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-1)) (x x-0))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+  (defstrand init 1 (x x))+  (defstrand init 3 (a b) (b b-0) (h (exp (gen) x-0)) (x x-1))+  (deflistener (exp (gen) (mul x-0 x-1)))+  (deflistener (cat (exp (gen) y) (mul x-0 x-1 (rec y))))+  (defstrand resp 2 (b b-1) (h h) (y y))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)) ((7 1) (6 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x x-0 x-1 y)+  (operation nonce-test (added-strand resp 2) (exp (gen) y) (6 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) x) (mul (rec x) x-0 x-1)))+      (send (cat (exp (gen) x) (mul (rec x) x-0 x-1))))+    ((send (exp (gen) x)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x-0 x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x-0 x-1)))))+    ((recv (exp (gen) (mul x-0 x-1))) (send (exp (gen) (mul x-0 x-1))))+    ((recv (cat (exp (gen) y) (mul x-0 x-1 (rec y))))+      (send (cat (exp (gen) y) (mul x-0 x-1 (rec y)))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-1)) (exp h y))))))+  (label 60)+  (parent 38)+  (unrealized (1 0) (2 0) (5 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (y x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul (rec y) x x-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen y x x-0)+  (operation nonce-test (contracted (x-1 x) (x-2 x-0) (w (mul x x-0)))+    (gen) (6 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul (rec y) x x-0)))+      (send (cat (exp (gen) y) (mul (rec y) x x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0)))))+  (label 61)+  (parent 39)+  (unrealized (1 0) (2 0) (5 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (y x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul (rec y) x x-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen y x x-0)+  (operation nonce-test (displaced 7 0 init 1) (exp (gen) x-1) (6 0))+  (traces+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul (rec y) x x-0)))+      (send (cat (exp (gen) y) (mul (rec y) x x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 62)+  (parent 39)+  (unrealized (1 0) (2 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (y x x-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul (rec y) x x-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen y x x-0)+  (operation nonce-test (displaced 7 4 init 1) (exp (gen) x-1) (6 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul (rec y) x x-0)))+      (send (cat (exp (gen) y) (mul (rec y) x x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x))))+  (label 63)+  (parent 39)+  (unrealized (1 0) (2 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (y x x-0 x-1 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul (rec y) x x-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+  (defstrand init 1 (x x-1))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)) ((7 0) (6 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen y x x-0 x-1)+  (operation nonce-test (added-strand init 1) (exp (gen) x-1) (6 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul (rec y) x x-0)))+      (send (cat (exp (gen) y) (mul (rec y) x x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-1) (mul x x-0 (rec x-1))))+      (send (cat (exp (gen) x-1) (mul x x-0 (rec x-1)))))+    ((send (exp (gen) x-1))))+  (label 64)+  (parent 39)+  (unrealized (1 0) (2 0) (5 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (x x-0 y expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x x-0 (rec y))))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x x-0 (rec y))))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((3 1) (6 0)) ((4 0) (2 0)) ((4 0) (6 0))+    ((4 2) (0 1)) ((5 1) (4 1)) ((6 1) (5 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen x x-0 y)+  (operation nonce-test (displaced 7 3 resp 2) (exp (gen) y-0) (6 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x x-0 (rec y))))+      (send (cat (exp (gen) y) (mul x x-0 (rec y)))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x x-0 (rec y))))+      (send (cat (exp (gen) y) (mul x x-0 (rec y))))))+  (label 65)+  (parent 39)+  (unrealized (1 0) (2 0) (5 0) (6 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 b-2 name) (h h-0 base) (y x x-0 y-0 expn))+  (defstrand init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul (rec y) x x-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (defstrand init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y-0) (mul x x-0 (rec y-0))))+  (defstrand resp 2 (b b-2) (h h-0) (y y-0))+  (precedes ((0 0) (2 0)) ((0 0) (6 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 0) (2 0)) ((4 0) (6 0)) ((4 2) (0 1))+    ((5 1) (4 1)) ((6 1) (5 0)) ((7 1) (6 0)))+  (absent (y-0 h-0) (y h))+  (non-orig (privk a) (privk b))+  (precur (6 0) (2 0))+  (uniq-gen y x x-0 y-0)+  (operation nonce-test (added-strand resp 2) (exp (gen) y-0) (6 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul (rec y) x x-0)))+      (send (cat (exp (gen) y) (mul (rec y) x x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y-0) (mul x x-0 (rec y-0))))+      (send (cat (exp (gen) y-0) (mul x x-0 (rec y-0)))))+    ((recv h-0)+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) h-0 (privk b-2)) (exp h-0 y-0))))))+  (label 66)+  (parent 39)+  (unrealized (1 0) (2 0) (5 0) (6 0))+  (comment "empty cohort"))++(comment "Nothing left to do")++(defprotocol station-to-station diffie-hellman+  (defrole init+    (vars (x expn) (h base) (a b name))+    (trace (send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))+    (uniq-gen x))+  (defrole resp+    (vars (y expn) (h base) (a b name))+    (trace (recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    (uniq-gen y)+    (absent (y h))))++(defskeleton station-to-station+  (vars (a b name) (h base) (y expn))+  (defstrand resp 3 (a a) (b b) (h h) (y y))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (traces+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))))+  (label 67)+  (unrealized (0 2))+  (origs)+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (uniq-gen y x)+  (operation encryption-test (added-strand init 3)+    (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+      (exp (gen) (mul y x))) (0 2))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x))))))+  (label 68)+  (parent 67)+  (unrealized (1 1))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (h base) (y expn))+  (defstrand resp 3 (a a) (b b) (h h) (y y))+  (deflistener (exp h y))+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (operation encryption-test (added-listener (exp h y))+    (enc (enc h (exp (gen) y) (privk a)) (exp h y)) (0 2))+  (traces+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    ((recv (exp h y)) (send (exp h y))))+  (label 69)+  (parent 67)+  (unrealized (0 2) (1 0))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (x y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (uniq-gen x y)+  (operation encryption-test (displaced 2 0 resp 2)+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+      (exp (gen) (mul x y))) (1 1))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y))))))+  (label 70)+  (parent 68)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b) (y y) (h (exp (gen) x)))))+  (origs))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (precedes ((0 1) (2 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (uniq-gen y x)+  (operation encryption-test (added-listener (exp (gen) (mul y x)))+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+      (exp (gen) (mul y x))) (1 1))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))+  (label 71)+  (parent 68)+  (unrealized (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (y expn))+  (defstrand resp 3 (a a) (b b) (h (gen)) (y y))+  (deflistener (exp (gen) y))+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))+  (absent (y (gen)))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (operation nonce-test (displaced 2 0 resp 2) (exp (gen) y-0) (1 0))+  (traces+    ((recv (gen))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))+      (recv (enc (enc (gen) (exp (gen) y) (privk a)) (exp (gen) y))))+    ((recv (exp (gen) y)) (send (exp (gen) y))))+  (label 72)+  (parent 69)+  (unrealized (0 2))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b name) (h base) (y expn) (w expr))+  (defstrand resp 3 (a a) (b b) (h h) (y y))+  (deflistener (exp h y))+  (deflistener (cat (exp h (mul y (rec w))) w))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (precur (2 0))+  (operation nonce-test (added-listener (cat (exp h (mul y (rec w))) w))+    (exp h y) (1 0))+  (traces+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    ((recv (exp h y)) (send (exp h y)))+    ((recv (cat (exp h (mul y (rec w))) w))+      (send (cat (exp h (mul y (rec w))) w))))+  (label 73)+  (parent 69)+  (unrealized (0 2) (2 0))+  (comment "4 in cohort - 4 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn) (w expr))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) (mul y x (rec w))) w))+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))+    ((3 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (uniq-gen y x)+  (precur (3 0))+  (operation nonce-test+    (added-listener (cat (exp (gen) (mul y x (rec w))) w))+    (exp (gen) (mul y x)) (2 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) (mul y x (rec w))) w))+      (send (cat (exp (gen) (mul y x (rec w))) w))))+  (label 74)+  (parent 71)+  (unrealized (3 0))+  (comment "5 in cohort - 5 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (w expr) (y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) w)) (y y))+  (deflistener (exp (gen) (mul w y)))+  (deflistener (cat (gen) (mul w y)))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))+  (absent (y (exp (gen) w)))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (precur (2 0))+  (operation nonce-test+    (contracted (y-0 y) (h (exp (gen) w)) (w (mul w y))) (gen) (2 0))+  (traces+    ((recv (exp (gen) w))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))+            (exp (gen) (mul w y)))))+      (recv+        (enc (enc (exp (gen) w) (exp (gen) y) (privk a))+          (exp (gen) (mul w y)))))+    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))+    ((recv (cat (gen) (mul w y))) (send (cat (gen) (mul w y)))))+  (label 75)+  (parent 73)+  (unrealized (0 2) (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (w expr) (x y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) (mul w x))) (y y))+  (deflistener (exp (gen) (mul w x y)))+  (deflistener (cat (exp (gen) x) (mul w y)))+  (defstrand init 1 (x x))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 0) (0 0)))+  (absent (y (exp (gen) (mul w x))))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y)+  (operation nonce-test (added-strand init 1) (exp (gen) x) (2 0))+  (traces+    ((recv (exp (gen) (mul w x)))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) (mul w x)) (privk b))+            (exp (gen) (mul w x y)))))+      (recv+        (enc (enc (exp (gen) (mul w x)) (exp (gen) y) (privk a))+          (exp (gen) (mul w x y)))))+    ((recv (exp (gen) (mul w x y))) (send (exp (gen) (mul w x y))))+    ((recv (cat (exp (gen) x) (mul w y)))+      (send (cat (exp (gen) x) (mul w y)))) ((send (exp (gen) x))))+  (label 76)+  (parent 73)+  (unrealized (0 2) (1 0) (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b name) (w expr) (y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) w)) (y y))+  (deflistener (exp (gen) (mul w y)))+  (deflistener (cat (exp (gen) y) w))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))+  (absent (y (exp (gen) w)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y)+  (operation nonce-test (displaced 3 0 resp 2) (exp (gen) y-0) (2 0))+  (traces+    ((recv (exp (gen) w))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))+            (exp (gen) (mul w y)))))+      (recv+        (enc (enc (exp (gen) w) (exp (gen) y) (privk a))+          (exp (gen) (mul w y)))))+    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))+  (label 77)+  (parent 73)+  (unrealized (0 2))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (h base) (w expr) (y y-0 expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) (mul w y))) (y y-0))+  (deflistener (exp (gen) (mul w y y-0)))+  (deflistener (cat (exp (gen) y) (mul w y-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 1) (0 0)))+  (absent (y h) (y-0 (exp (gen) (mul w y))))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y y-0)+  (operation nonce-test (added-strand resp 2) (exp (gen) y) (2 0))+  (traces+    ((recv (exp (gen) (mul w y)))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) (mul w y)) (privk b))+            (exp (gen) (mul w y y-0)))))+      (recv+        (enc (enc (exp (gen) (mul w y)) (exp (gen) y-0) (privk a))+          (exp (gen) (mul w y y-0)))))+    ((recv (exp (gen) (mul w y y-0))) (send (exp (gen) (mul w y y-0))))+    ((recv (cat (exp (gen) y) (mul w y-0)))+      (send (cat (exp (gen) y) (mul w y-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))+  (label 78)+  (parent 73)+  (unrealized (0 2) (1 0) (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (gen) (mul y x)))+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))+    ((3 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (uniq-gen y x)+  (precur (3 0))+  (operation nonce-test (contracted (y-0 y) (x-0 x) (w (mul y x))) (gen)+    (3 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (gen) (mul y x))) (send (cat (gen) (mul y x)))))+  (label 79)+  (parent 74)+  (unrealized (2 0) (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) x) y))+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))+    ((3 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (3 0))+  (uniq-gen y x)+  (operation nonce-test (displaced 4 1 init 1) (exp (gen) x-0) (3 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))+  (label 80)+  (parent 74)+  (unrealized (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x x-0 expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) x-0) (mul y x (rec x-0))))+  (defstrand init 1 (x x-0))+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))+    ((3 1) (2 0)) ((4 0) (3 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (3 0))+  (uniq-gen y x x-0)+  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (3 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) x-0) (mul y x (rec x-0))))+      (send (cat (exp (gen) x-0) (mul y x (rec x-0)))))+    ((send (exp (gen) x-0))))+  (label 81)+  (parent 74)+  (unrealized (2 0) (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) y) x))+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))+    ((3 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (3 0))+  (uniq-gen x y)+  (operation nonce-test (displaced 4 0 resp 2) (exp (gen) y-0) (3 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))+  (label 82)+  (parent 74)+  (unrealized (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (y x y-0 expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y-0) (mul y x (rec y-0))))+  (defstrand resp 2 (b b-1) (h h) (y y-0))+  (precedes ((0 1) (3 0)) ((1 0) (0 0)) ((1 2) (0 2)) ((2 1) (1 1))+    ((3 1) (2 0)) ((4 1) (3 0)))+  (absent (y-0 h) (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (3 0))+  (uniq-gen y x y-0)+  (operation nonce-test (added-strand resp 2) (exp (gen) y-0) (3 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y-0) (mul y x (rec y-0))))+      (send (cat (exp (gen) y-0) (mul y x (rec y-0)))))+    ((recv h)+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) h (privk b-1)) (exp h y-0))))))+  (label 83)+  (parent 74)+  (unrealized (2 0) (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b name) (w expr) (y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) w)) (y y))+  (deflistener (exp (gen) (mul w y)))+  (deflistener (cat (gen) (mul w y)))+  (deflistener y)+  (precedes ((0 1) (3 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y (exp (gen) w)))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (precur (2 0))+  (operation nonce-test (added-listener y) (mul w y) (2 0))+  (traces+    ((recv (exp (gen) w))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))+            (exp (gen) (mul w y)))))+      (recv+        (enc (enc (exp (gen) w) (exp (gen) y) (privk a))+          (exp (gen) (mul w y)))))+    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))+    ((recv (cat (gen) (mul w y))) (send (cat (gen) (mul w y))))+    ((recv y) (send y)))+  (label 84)+  (parent 75)+  (unrealized (0 2) (3 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b name) (w expr) (x y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) (mul w x))) (y y))+  (deflistener (exp (gen) (mul w x y)))+  (deflistener (cat (exp (gen) x) (mul w y)))+  (defstrand init 1 (x x))+  (deflistener y)+  (precedes ((0 1) (4 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 0) (0 0))+    ((4 1) (2 0)))+  (absent (y (exp (gen) (mul w x))))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y)+  (operation nonce-test (added-listener y) (mul w y) (2 0))+  (traces+    ((recv (exp (gen) (mul w x)))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) (mul w x)) (privk b))+            (exp (gen) (mul w x y)))))+      (recv+        (enc (enc (exp (gen) (mul w x)) (exp (gen) y) (privk a))+          (exp (gen) (mul w x y)))))+    ((recv (exp (gen) (mul w x y))) (send (exp (gen) (mul w x y))))+    ((recv (cat (exp (gen) x) (mul w y)))+      (send (cat (exp (gen) x) (mul w y)))) ((send (exp (gen) x)))+    ((recv y) (send y)))+  (label 85)+  (parent 76)+  (unrealized (0 2) (4 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y x)+  (operation encryption-test (added-strand init 3)+    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x))))))+  (label 86)+  (parent 77)+  (unrealized (2 0) (3 1))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (h base) (w expr) (y y-0 expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) (mul w y))) (y y-0))+  (deflistener (exp (gen) (mul w y y-0)))+  (deflistener (cat (exp (gen) y) (mul w y-0)))+  (defstrand resp 2 (b b-0) (h h) (y y))+  (deflistener y-0)+  (precedes ((0 1) (4 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 1) (0 0))+    ((4 1) (2 0)))+  (absent (y h) (y-0 (exp (gen) (mul w y))))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y y-0)+  (operation nonce-test (added-listener y-0) (mul w y-0) (2 0))+  (traces+    ((recv (exp (gen) (mul w y)))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) (mul w y)) (privk b))+            (exp (gen) (mul w y y-0)))))+      (recv+        (enc (enc (exp (gen) (mul w y)) (exp (gen) y-0) (privk a))+          (exp (gen) (mul w y y-0)))))+    ((recv (exp (gen) (mul w y y-0))) (send (exp (gen) (mul w y y-0))))+    ((recv (cat (exp (gen) y) (mul w y-0)))+      (send (cat (exp (gen) y) (mul w y-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((recv y-0) (send y-0)))+  (label 87)+  (parent 78)+  (unrealized (0 2) (4 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b name) (x y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x y)+  (operation encryption-test (displaced 4 0 resp 2)+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+      (exp (gen) (mul x y))) (3 1))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y))))))+  (label 88)+  (parent 86)+  (unrealized (2 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (precedes ((0 1) (2 0)) ((0 1) (4 0)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y x)+  (operation encryption-test (added-listener (exp (gen) (mul y x)))+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+      (exp (gen) (mul y x))) (3 1))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x)))))+  (label 89)+  (parent 86)+  (unrealized (2 0) (4 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn) (w expr))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) (mul y x (rec w))) w))+  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen y x)+  (operation nonce-test+    (added-listener (cat (exp (gen) (mul y x (rec w))) w))+    (exp (gen) (mul y x)) (4 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) (mul y x (rec w))) w))+      (send (cat (exp (gen) (mul y x (rec w))) w))))+  (label 90)+  (parent 89)+  (unrealized (2 0) (5 0))+  (comment "5 in cohort - 5 not yet seen"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (gen) (mul y x)))+  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen y x)+  (operation nonce-test (contracted (y-0 y) (x-0 x) (w (mul y x))) (gen)+    (5 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (gen) (mul y x))) (send (cat (gen) (mul y x)))))+  (label 91)+  (parent 90)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) x) y))+  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen y x)+  (operation nonce-test (displaced 6 3 init 1) (exp (gen) x-0) (5 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y))))+  (label 92)+  (parent 90)+  (unrealized (2 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (y x x-0 expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) x-0) (mul y x (rec x-0))))+  (defstrand init 1 (x x-0))+  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0))+    ((6 0) (5 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen y x x-0)+  (operation nonce-test (added-strand init 1) (exp (gen) x-0) (5 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) x-0) (mul y x (rec x-0))))+      (send (cat (exp (gen) x-0) (mul y x (rec x-0)))))+    ((send (exp (gen) x-0))))+  (label 93)+  (parent 90)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 name) (x y expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) y) x))+  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen x y)+  (operation nonce-test (displaced 6 0 resp 2) (exp (gen) y-0) (5 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x))))+  (label 94)+  (parent 90)+  (unrealized (2 0) (5 0))+  (comment "empty cohort"))++(defskeleton station-to-station+  (vars (a b b-0 b-1 name) (h base) (y x y-0 expn))+  (defstrand resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y-0) (mul y x (rec y-0))))+  (defstrand resp 2 (b b-1) (h h) (y y-0))+  (precedes ((0 1) (2 0)) ((0 1) (5 0)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 0) (0 0)) ((3 2) (0 2)) ((4 1) (3 1)) ((5 1) (4 0))+    ((6 1) (5 0)))+  (absent (y-0 h) (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (5 0) (2 0))+  (uniq-gen y x y-0)+  (operation nonce-test (added-strand resp 2) (exp (gen) y-0) (5 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y-0) (mul y x (rec y-0))))+      (send (cat (exp (gen) y-0) (mul y x (rec y-0)))))+    ((recv h)+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) h (privk b-1)) (exp h y-0))))))+  (label 95)+  (parent 90)+  (unrealized (2 0) (4 0) (5 0))+  (comment "empty cohort"))++(comment "Nothing left to do")++(defprotocol station-weak diffie-hellman+  (defrole weak-init+    (vars (x expn) (h base) (a b name))+    (trace (send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))))+  (defrole weak-resp+    (vars (y expn) (h base) (a b name))+    (trace (recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    (absent (y h))))++(defskeleton station-weak+  (vars (a b name) (h base) (x expn))+  (defstrand weak-init 3 (a a) (b b) (h h) (x x))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (traces+    ((send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))))+  (label 96)+  (unrealized (0 1))+  (origs)+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (defstrand weak-init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (1 1)) ((1 2) (0 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-init 3)+    (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+      (exp (gen) (mul x x-0))) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 97)+  (parent 96)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b) (x x) (h (exp (gen) x-0)))))+  (origs))++(defskeleton station-weak+  (vars (a b name) (x y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-resp 2)+    (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+      (exp (gen) (mul x y))) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 98)+  (parent 96)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b) (x x) (h (exp (gen) y)))))+  (origs))++(defskeleton station-weak+  (vars (a b name) (h base) (x expn))+  (defstrand weak-init 3 (a a) (b b) (h h) (x x))+  (deflistener (exp h x))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation encryption-test (added-listener (exp h x))+    (enc (enc h (exp (gen) x) (privk b)) (exp h x)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))+    ((recv (exp h x)) (send (exp h x))))+  (label 99)+  (parent 96)+  (unrealized (0 1) (1 0))+  (comment "5 in cohort - 5 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (x expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) (rec x))) (x x))+  (deflistener (gen))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation nonce-test (contracted (h (exp (gen) (rec x)))) (gen)+    (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (rec x))+          (enc (enc (exp (gen) (rec x)) (exp (gen) x) (privk b))+            (gen))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (rec x)) (privk a)) (gen))))+    ((recv (gen)) (send (gen))))+  (label 100)+  (parent 99)+  (unrealized (0 1))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b name) (x expn))+  (defstrand weak-init 3 (a a) (b b) (h (gen)) (x x))+  (deflistener (exp (gen) x))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation nonce-test (displaced 2 0 weak-init 1) (exp (gen) x-0)+    (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (gen)+          (enc (enc (gen) (exp (gen) x) (privk b)) (exp (gen) x))))+      (send (enc (enc (exp (gen) x) (gen) (privk a)) (exp (gen) x))))+    ((recv (exp (gen) x)) (send (exp (gen) x))))+  (label 101)+  (parent 99)+  (unrealized (0 1))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b name) (x x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) (mul (rec x) x-0)))+    (x x))+  (deflistener (exp (gen) x-0))+  (defstrand weak-init 1 (x x-0))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 0) (1 0)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation nonce-test (added-strand weak-init 1) (exp (gen) x-0)+    (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) x-0))+          (enc+            (enc (exp (gen) (mul (rec x) x-0)) (exp (gen) x) (privk b))+            (exp (gen) x-0))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) x-0)) (privk a))+          (exp (gen) x-0))))+    ((recv (exp (gen) x-0)) (send (exp (gen) x-0)))+    ((send (exp (gen) x-0))))+  (label 102)+  (parent 99)+  (unrealized (0 1))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b b-0 name) (h base) (x y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) (mul (rec x) y)))+    (x x))+  (deflistener (exp (gen) y))+  (defstrand weak-resp 2 (b b-0) (h h) (y y))+  (precedes ((0 0) (1 0)) ((1 1) (0 1)) ((2 1) (1 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (operation nonce-test (added-strand weak-resp 2) (exp (gen) y) (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) y))+          (enc (enc (exp (gen) (mul (rec x) y)) (exp (gen) x) (privk b))+            (exp (gen) y))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) y)) (privk a))+          (exp (gen) y)))) ((recv (exp (gen) y)) (send (exp (gen) y)))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))+  (label 103)+  (parent 99)+  (unrealized (0 1))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b name) (h base) (x expn) (w expr))+  (defstrand weak-init 3 (a a) (b b) (h h) (x x))+  (deflistener (exp h x))+  (deflistener (cat (exp h (mul x (rec w))) w))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (precur (2 0))+  (operation nonce-test (added-listener (cat (exp h (mul x (rec w))) w))+    (exp h x) (1 0))+  (traces+    ((send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x))))+    ((recv (exp h x)) (send (exp h x)))+    ((recv (cat (exp h (mul x (rec w))) w))+      (send (cat (exp h (mul x (rec w))) w))))+  (label 104)+  (parent 99)+  (unrealized (0 1) (2 0))+  (comment "4 in cohort - 4 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (x expn) (w expr))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w)))+    (x x))+  (deflistener (exp (gen) w))+  (deflistener (cat (gen) w))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))+  (non-orig (privk a) (privk b))+  (uniq-gen x)+  (precur (2 0))+  (operation nonce-test (contracted (h (exp (gen) (mul (rec x) w))))+    (gen) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) w))+          (enc (enc (exp (gen) (mul (rec x) w)) (exp (gen) x) (privk b))+            (exp (gen) w))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) w)) (privk a))+          (exp (gen) w)))) ((recv (exp (gen) w)) (send (exp (gen) w)))+    ((recv (cat (gen) w)) (send (cat (gen) w))))+  (label 105)+  (parent 104)+  (unrealized (0 1))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (w expr) (x expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) w)) (x x))+  (deflistener (exp (gen) (mul w x)))+  (deflistener (cat (exp (gen) x) w))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (displaced 3 0 weak-init 1) (exp (gen) x-0)+    (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) w)+          (enc (enc (exp (gen) w) (exp (gen) x) (privk b))+            (exp (gen) (mul w x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) w) (privk a))+          (exp (gen) (mul w x)))))+    ((recv (exp (gen) (mul w x))) (send (exp (gen) (mul w x))))+    ((recv (cat (exp (gen) x) w)) (send (cat (exp (gen) x) w))))+  (label 106)+  (parent 104)+  (unrealized (0 1))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (x expn) (w expr) (x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w x-0)))+    (x x))+  (deflistener (exp (gen) (mul w x-0)))+  (deflistener (cat (exp (gen) x-0) w))+  (defstrand weak-init 1 (x x-0))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 0) (2 0)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (added-strand weak-init 1) (exp (gen) x-0)+    (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) w x-0))+          (enc+            (enc (exp (gen) (mul (rec x) w x-0)) (exp (gen) x)+              (privk b)) (exp (gen) (mul w x-0)))))+      (send+        (enc+          (enc (exp (gen) x) (exp (gen) (mul (rec x) w x-0)) (privk a))+          (exp (gen) (mul w x-0)))))+    ((recv (exp (gen) (mul w x-0))) (send (exp (gen) (mul w x-0))))+    ((recv (cat (exp (gen) x-0) w)) (send (cat (exp (gen) x-0) w)))+    ((send (exp (gen) x-0))))+  (label 107)+  (parent 104)+  (unrealized (0 1))+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (h base) (x expn) (w expr) (y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) (mul (rec x) w y)))+    (x x))+  (deflistener (exp (gen) (mul w y)))+  (deflistener (cat (exp (gen) y) w))+  (defstrand weak-resp 2 (b b-0) (h h) (y y))+  (precedes ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (added-strand weak-resp 2) (exp (gen) y) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) (mul (rec x) w y))+          (enc+            (enc (exp (gen) (mul (rec x) w y)) (exp (gen) x) (privk b))+            (exp (gen) (mul w y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) (mul (rec x) w y)) (privk a))+          (exp (gen) (mul w y)))))+    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w)))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))+  (label 108)+  (parent 104)+  (unrealized (0 1))+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand weak-init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-init 3)+    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 109)+  (parent 105)+  (unrealized (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (x y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (gen) (mul x y)))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (0 1)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-resp 2)+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (gen) (mul x y))) (send (cat (gen) (mul x y))))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 110)+  (parent 105)+  (unrealized (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand weak-init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-init 3)+    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 111)+  (parent 106)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (x y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) x) y))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (2 0)) ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (0 1)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-resp 2)+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y)))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 112)+  (parent 106)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) x-0) x))+  (defstrand weak-init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (2 0)) ((0 0) (3 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((3 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (displaced 3 4 weak-init 3)+    (enc (exp (gen) x-1) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) x-0) x)) (send (cat (exp (gen) x-0) x)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 113)+  (parent 107)+  (unrealized (2 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))+  (deflistener (exp (gen) (mul x x-1)))+  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+  (defstrand weak-init 1 (x x-0))+  (defstrand weak-init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))+  (precedes ((0 0) (2 0)) ((0 0) (4 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-init 3)+    (enc (exp (gen) x-1) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x x-1)))))+    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))+    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))+    ((send (exp (gen) x-0)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-1))))))+  (label 114)+  (parent 107)+  (unrealized (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (x x-0 y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) y)))+  (defstrand weak-init 1 (x x-0))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 1) (0 1)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-resp 2)+    (enc (exp (gen) y) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) y)))+      (send (cat (exp (gen) x-0) (mul x (rec x-0) y))))+    ((send (exp (gen) x-0)))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 115)+  (parent 107)+  (unrealized (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 b-1 name) (h base) (x y x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))+  (defstrand weak-resp 2 (b b-0) (h h) (y y))+  (defstrand weak-init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (2 0)) ((0 0) (4 1)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 2) (0 1)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-init 3)+    (enc (exp (gen) x-0) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))+      (send (cat (exp (gen) y) (mul x (rec y) x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 116)+  (parent 108)+  (unrealized (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (x y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (3 0)) ((1 1) (0 1)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (displaced 4 3 weak-resp 2)+    (enc (exp (gen) y-0) (exp (gen) x) (privk b-0)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 117)+  (parent 108)+  (unrealized (2 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b b-0 name) (h base) (x y y-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y-0)) (x x))+  (deflistener (exp (gen) (mul x y-0)))+  (deflistener (cat (exp (gen) y) (mul x (rec y) y-0)))+  (defstrand weak-resp 2 (b b-0) (h h) (y y))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y-0))+  (precedes ((0 0) (2 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 1) (0 1)))+  (absent (y-0 (exp (gen) x)) (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation encryption-test (added-strand weak-resp 2)+    (enc (exp (gen) y-0) (exp (gen) x) (privk b)) (0 1))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x y-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y-0) (privk a))+          (exp (gen) (mul x y-0)))))+    ((recv (exp (gen) (mul x y-0))) (send (exp (gen) (mul x y-0))))+    ((recv (cat (exp (gen) y) (mul x (rec y) y-0)))+      (send (cat (exp (gen) y) (mul x (rec y) y-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x y-0)))))))+  (label 118)+  (parent 108)+  (unrealized (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (gen) (mul x x-0)))+  (defstrand weak-init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (deflistener x)+  (precedes ((0 0) (3 1)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 2) (0 1)) ((4 1) (2 0)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (added-listener x) (mul x x-0) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (gen) (mul x x-0))) (send (cat (gen) (mul x x-0))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))) ((recv x) (send x)))+  (label 119)+  (parent 109)+  (unrealized (4 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b name) (x y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (gen) (mul x y)))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y))+  (deflistener x)+  (precedes ((0 0) (3 0)) ((0 0) (4 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (0 1)) ((4 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (added-listener x) (mul x y) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (gen) (mul x y))) (send (cat (gen) (mul x y))))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))) ((recv x) (send x)))+  (label 120)+  (parent 110)+  (unrealized (4 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b b-0 name) (x x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (cat (exp (gen) x) x-0))+  (defstrand weak-init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-0))+  (precedes ((0 0) (1 0)) ((0 0) (2 1)) ((1 1) (0 1)) ((2 2) (0 1)))+  (non-orig (privk a) (privk b))+  (precur (1 0))+  (uniq-gen x)+  (operation generalization deleted (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (cat (exp (gen) x) x-0)) (send (cat (exp (gen) x) x-0)))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-0))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))))+  (label 121)+  (parent 111)+  (seen 97)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (x y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (cat (exp (gen) x) y))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y))+  (precedes ((0 0) (1 0)) ((0 0) (2 0)) ((1 1) (0 1)) ((2 1) (0 1)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (1 0))+  (uniq-gen x)+  (operation generalization deleted (1 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (cat (exp (gen) x) y)) (send (cat (exp (gen) x) y)))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))))+  (label 122)+  (parent 112)+  (seen 98)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (x x-0 x-1 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-1)) (x x))+  (deflistener (exp (gen) (mul x x-1)))+  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+  (defstrand weak-init 1 (x x-0))+  (defstrand weak-init 3 (a b) (b b-0) (h (exp (gen) x)) (x x-1))+  (deflistener x)+  (precedes ((0 0) (4 1)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 2) (0 1)) ((5 1) (2 0)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (added-listener x) (mul x (rec x-0) x-1) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-1)+          (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-1) (privk a))+          (exp (gen) (mul x x-1)))))+    ((recv (exp (gen) (mul x x-1))) (send (exp (gen) (mul x x-1))))+    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) x-1)))+      (send (cat (exp (gen) x-0) (mul x (rec x-0) x-1))))+    ((send (exp (gen) x-0)))+    ((send (exp (gen) x-1))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-1) (privk b-0))+            (exp (gen) (mul x x-1)))))+      (send+        (enc (enc (exp (gen) x-1) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-1))))) ((recv x) (send x)))+  (label 123)+  (parent 114)+  (unrealized (5 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b name) (x x-0 y expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y)) (x x))+  (deflistener (exp (gen) (mul x y)))+  (deflistener (cat (exp (gen) x-0) (mul x (rec x-0) y)))+  (defstrand weak-init 1 (x x-0))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y))+  (deflistener x)+  (precedes ((0 0) (4 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 0) (2 0)) ((4 1) (0 1)) ((5 1) (2 0)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (added-listener x) (mul x (rec x-0) y) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul x y)))))+    ((recv (exp (gen) (mul x y))) (send (exp (gen) (mul x y))))+    ((recv (cat (exp (gen) x-0) (mul x (rec x-0) y)))+      (send (cat (exp (gen) x-0) (mul x (rec x-0) y))))+    ((send (exp (gen) x-0)))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul x y)))))) ((recv x) (send x)))+  (label 124)+  (parent 115)+  (unrealized (5 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b b-0 b-1 name) (h base) (x y x-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) x-0)) (x x))+  (deflistener (exp (gen) (mul x x-0)))+  (deflistener (cat (exp (gen) y) (mul x (rec y) x-0)))+  (defstrand weak-resp 2 (b b-0) (h h) (y y))+  (defstrand weak-init 3 (a b) (b b-1) (h (exp (gen) x)) (x x-0))+  (deflistener x)+  (precedes ((0 0) (4 1)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 2) (0 1)) ((5 1) (2 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (added-listener x) (mul x (rec y) x-0) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) x-0)+          (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) x-0) (privk a))+          (exp (gen) (mul x x-0)))))+    ((recv (exp (gen) (mul x x-0))) (send (exp (gen) (mul x x-0))))+    ((recv (cat (exp (gen) y) (mul x (rec y) x-0)))+      (send (cat (exp (gen) y) (mul x (rec y) x-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((send (exp (gen) x-0))+      (recv+        (cat (exp (gen) x)+          (enc (enc (exp (gen) x) (exp (gen) x-0) (privk b-1))+            (exp (gen) (mul x x-0)))))+      (send+        (enc (enc (exp (gen) x-0) (exp (gen) x) (privk b))+          (exp (gen) (mul x x-0))))) ((recv x) (send x)))+  (label 125)+  (parent 116)+  (unrealized (5 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b b-0 name) (h base) (x y y-0 expn))+  (defstrand weak-init 3 (a a) (b b) (h (exp (gen) y-0)) (x x))+  (deflistener (exp (gen) (mul x y-0)))+  (deflistener (cat (exp (gen) y) (mul x (rec y) y-0)))+  (defstrand weak-resp 2 (b b-0) (h h) (y y))+  (defstrand weak-resp 2 (b b) (h (exp (gen) x)) (y y-0))+  (deflistener x)+  (precedes ((0 0) (4 0)) ((0 0) (5 0)) ((1 1) (0 1)) ((2 1) (1 0))+    ((3 1) (2 0)) ((4 1) (0 1)) ((5 1) (2 0)))+  (absent (y-0 (exp (gen) x)) (y h))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen x)+  (operation nonce-test (added-listener x) (mul x (rec y) y-0) (2 0))+  (traces+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x y-0)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y-0) (privk a))+          (exp (gen) (mul x y-0)))))+    ((recv (exp (gen) (mul x y-0))) (send (exp (gen) (mul x y-0))))+    ((recv (cat (exp (gen) y) (mul x (rec y) y-0)))+      (send (cat (exp (gen) y) (mul x (rec y) y-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) x) (privk b))+            (exp (gen) (mul x y-0)))))) ((recv x) (send x)))+  (label 126)+  (parent 118)+  (unrealized (5 0))+  (comment "empty cohort"))++(comment "Nothing left to do")++(defprotocol station-weak diffie-hellman+  (defrole weak-init+    (vars (x expn) (h base) (a b name))+    (trace (send (exp (gen) x))+      (recv (cat h (enc (enc h (exp (gen) x) (privk b)) (exp h x))))+      (send (enc (enc (exp (gen) x) h (privk a)) (exp h x)))))+  (defrole weak-resp+    (vars (y expn) (h base) (a b name))+    (trace (recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    (absent (y h))))++(defskeleton station-weak+  (vars (a b name) (h base) (y expn))+  (defstrand weak-resp 3 (a a) (b b) (h h) (y y))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (traces+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y)))))+  (label 127)+  (unrealized (0 2))+  (origs)+  (comment "3 in cohort - 3 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (y x expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (defstrand weak-init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (precedes ((0 1) (1 1)) ((1 2) (0 2)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (operation encryption-test (added-strand weak-init 3)+    (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+      (exp (gen) (mul y x))) (0 2))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x))))))+  (label 128)+  (parent 127)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b) (y y) (h (exp (gen) x)))))+  (origs))++(defskeleton station-weak+  (vars (a b name) (y y-0 expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) y-0)) (y y))+  (defstrand weak-resp 2 (b a) (h (exp (gen) y)) (y y-0))+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))+  (absent (y-0 (exp (gen) y)) (y (exp (gen) y-0)))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (operation encryption-test (added-strand weak-resp 2)+    (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))+      (exp (gen) (mul y y-0))) (0 2))+  (traces+    ((recv (exp (gen) y-0))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) y-0) (privk b))+            (exp (gen) (mul y y-0)))))+      (recv+        (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))+          (exp (gen) (mul y y-0)))))+    ((recv (exp (gen) y))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))+            (exp (gen) (mul y y-0)))))))+  (label 129)+  (parent 127)+  (unrealized)+  (shape)+  (maps ((0) ((a a) (b b) (y y) (h (exp (gen) y-0)))))+  (origs))++(defskeleton station-weak+  (vars (a b name) (h base) (y expn))+  (defstrand weak-resp 3 (a a) (b b) (h h) (y y))+  (deflistener (exp h y))+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (operation encryption-test (added-listener (exp h y))+    (enc (enc h (exp (gen) y) (privk a)) (exp h y)) (0 2))+  (traces+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    ((recv (exp h y)) (send (exp h y))))+  (label 130)+  (parent 127)+  (unrealized (0 2) (1 0))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (y expn))+  (defstrand weak-resp 3 (a a) (b b) (h (gen)) (y y))+  (deflistener (exp (gen) y))+  (precedes ((0 1) (1 0)) ((1 1) (0 2)))+  (absent (y (gen)))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (operation nonce-test (displaced 2 0 weak-resp 2) (exp (gen) y-0)+    (1 0))+  (traces+    ((recv (gen))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (gen) (privk b)) (exp (gen) y))))+      (recv (enc (enc (gen) (exp (gen) y) (privk a)) (exp (gen) y))))+    ((recv (exp (gen) y)) (send (exp (gen) y))))+  (label 131)+  (parent 130)+  (unrealized (0 2))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b name) (h base) (y expn) (w expr))+  (defstrand weak-resp 3 (a a) (b b) (h h) (y y))+  (deflistener (exp h y))+  (deflistener (cat (exp h (mul y (rec w))) w))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))+  (absent (y h))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (precur (2 0))+  (operation nonce-test (added-listener (cat (exp h (mul y (rec w))) w))+    (exp h y) (1 0))+  (traces+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b)) (exp h y))))+      (recv (enc (enc h (exp (gen) y) (privk a)) (exp h y))))+    ((recv (exp h y)) (send (exp h y)))+    ((recv (cat (exp h (mul y (rec w))) w))+      (send (cat (exp h (mul y (rec w))) w))))+  (label 132)+  (parent 130)+  (unrealized (0 2) (2 0))+  (comment "4 in cohort - 4 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (w expr) (y expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) w)) (y y))+  (deflistener (exp (gen) (mul w y)))+  (deflistener (cat (gen) (mul w y)))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))+  (absent (y (exp (gen) w)))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (precur (2 0))+  (operation nonce-test+    (contracted (y-0 y) (h (exp (gen) w)) (w (mul w y))) (gen) (2 0))+  (traces+    ((recv (exp (gen) w))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))+            (exp (gen) (mul w y)))))+      (recv+        (enc (enc (exp (gen) w) (exp (gen) y) (privk a))+          (exp (gen) (mul w y)))))+    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))+    ((recv (cat (gen) (mul w y))) (send (cat (gen) (mul w y)))))+  (label 133)+  (parent 132)+  (unrealized (0 2) (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (w expr) (x y expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) (mul w x))) (y y))+  (deflistener (exp (gen) (mul w x y)))+  (deflistener (cat (exp (gen) x) (mul w y)))+  (defstrand weak-init 1 (x x))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 0) (2 0)))+  (absent (y (exp (gen) (mul w x))))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y)+  (operation nonce-test (added-strand weak-init 1) (exp (gen) x) (2 0))+  (traces+    ((recv (exp (gen) (mul w x)))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) (mul w x)) (privk b))+            (exp (gen) (mul w x y)))))+      (recv+        (enc (enc (exp (gen) (mul w x)) (exp (gen) y) (privk a))+          (exp (gen) (mul w x y)))))+    ((recv (exp (gen) (mul w x y))) (send (exp (gen) (mul w x y))))+    ((recv (cat (exp (gen) x) (mul w y)))+      (send (cat (exp (gen) x) (mul w y)))) ((send (exp (gen) x))))+  (label 134)+  (parent 132)+  (unrealized (0 2) (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (w expr) (y expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) w)) (y y))+  (deflistener (exp (gen) (mul w y)))+  (deflistener (cat (exp (gen) y) w))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)))+  (absent (y (exp (gen) w)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y)+  (operation nonce-test (displaced 3 0 weak-resp 2) (exp (gen) y-0)+    (2 0))+  (traces+    ((recv (exp (gen) w))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))+            (exp (gen) (mul w y)))))+      (recv+        (enc (enc (exp (gen) w) (exp (gen) y) (privk a))+          (exp (gen) (mul w y)))))+    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))+    ((recv (cat (exp (gen) y) w)) (send (cat (exp (gen) y) w))))+  (label 135)+  (parent 132)+  (unrealized (0 2))+  (comment "2 in cohort - 2 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (h base) (w expr) (y y-0 expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) (mul w y))) (y y-0))+  (deflistener (exp (gen) (mul w y y-0)))+  (deflistener (cat (exp (gen) y) (mul w y-0)))+  (defstrand weak-resp 2 (b b-0) (h h) (y y))+  (precedes ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y h) (y-0 (exp (gen) (mul w y))))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y-0)+  (operation nonce-test (added-strand weak-resp 2) (exp (gen) y) (2 0))+  (traces+    ((recv (exp (gen) (mul w y)))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) (mul w y)) (privk b))+            (exp (gen) (mul w y y-0)))))+      (recv+        (enc (enc (exp (gen) (mul w y)) (exp (gen) y-0) (privk a))+          (exp (gen) (mul w y y-0)))))+    ((recv (exp (gen) (mul w y y-0))) (send (exp (gen) (mul w y y-0))))+    ((recv (cat (exp (gen) y) (mul w y-0)))+      (send (cat (exp (gen) y) (mul w y-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y))))))+  (label 136)+  (parent 132)+  (unrealized (0 2) (2 0))+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (w expr) (y expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) w)) (y y))+  (deflistener (exp (gen) (mul w y)))+  (deflistener (cat (gen) (mul w y)))+  (deflistener y)+  (precedes ((0 1) (3 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 1) (2 0)))+  (absent (y (exp (gen) w)))+  (non-orig (privk a) (privk b))+  (uniq-gen y)+  (precur (2 0))+  (operation nonce-test (added-listener y) (mul w y) (2 0))+  (traces+    ((recv (exp (gen) w))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) w) (privk b))+            (exp (gen) (mul w y)))))+      (recv+        (enc (enc (exp (gen) w) (exp (gen) y) (privk a))+          (exp (gen) (mul w y)))))+    ((recv (exp (gen) (mul w y))) (send (exp (gen) (mul w y))))+    ((recv (cat (gen) (mul w y))) (send (cat (gen) (mul w y))))+    ((recv y) (send y)))+  (label 137)+  (parent 133)+  (unrealized (0 2) (3 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b name) (w expr) (x y expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) (mul w x))) (y y))+  (deflistener (exp (gen) (mul w x y)))+  (deflistener (cat (exp (gen) x) (mul w y)))+  (defstrand weak-init 1 (x x))+  (deflistener y)+  (precedes ((0 1) (4 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 0) (2 0))+    ((4 1) (2 0)))+  (absent (y (exp (gen) (mul w x))))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y)+  (operation nonce-test (added-listener y) (mul w y) (2 0))+  (traces+    ((recv (exp (gen) (mul w x)))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) (mul w x)) (privk b))+            (exp (gen) (mul w x y)))))+      (recv+        (enc (enc (exp (gen) (mul w x)) (exp (gen) y) (privk a))+          (exp (gen) (mul w x y)))))+    ((recv (exp (gen) (mul w x y))) (send (exp (gen) (mul w x y))))+    ((recv (cat (exp (gen) x) (mul w y)))+      (send (cat (exp (gen) x) (mul w y)))) ((send (exp (gen) x)))+    ((recv y) (send y)))+  (label 138)+  (parent 134)+  (unrealized (0 2) (4 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b b-0 name) (y x expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (exp (gen) (mul y x)))+  (deflistener (cat (exp (gen) y) x))+  (defstrand weak-init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (precedes ((0 1) (2 0)) ((0 1) (3 1)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 2) (0 2)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y)+  (operation encryption-test (added-strand weak-init 3)+    (enc (exp (gen) x) (exp (gen) y) (privk a)) (0 2))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (exp (gen) (mul y x))) (send (exp (gen) (mul y x))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x))))))+  (label 139)+  (parent 135)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (y y-0 expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) y-0)) (y y))+  (deflistener (exp (gen) (mul y y-0)))+  (deflistener (cat (exp (gen) y) y-0))+  (defstrand weak-resp 2 (b a) (h (exp (gen) y)) (y y-0))+  (precedes ((0 1) (2 0)) ((0 1) (3 0)) ((1 1) (0 2)) ((2 1) (1 0))+    ((3 1) (0 2)))+  (absent (y-0 (exp (gen) y)) (y (exp (gen) y-0)))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y)+  (operation encryption-test (added-strand weak-resp 2)+    (enc (exp (gen) y-0) (exp (gen) y) (privk a)) (0 2))+  (traces+    ((recv (exp (gen) y-0))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) y-0) (privk b))+            (exp (gen) (mul y y-0)))))+      (recv+        (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))+          (exp (gen) (mul y y-0)))))+    ((recv (exp (gen) (mul y y-0))) (send (exp (gen) (mul y y-0))))+    ((recv (cat (exp (gen) y) y-0)) (send (cat (exp (gen) y) y-0)))+    ((recv (exp (gen) y))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))+            (exp (gen) (mul y y-0)))))))+  (label 140)+  (parent 135)+  (unrealized)+  (comment "1 in cohort - 1 not yet seen"))++(defskeleton station-weak+  (vars (a b b-0 name) (h base) (w expr) (y y-0 expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) (mul w y))) (y y-0))+  (deflistener (exp (gen) (mul w y y-0)))+  (deflistener (cat (exp (gen) y) (mul w y-0)))+  (defstrand weak-resp 2 (b b-0) (h h) (y y))+  (deflistener y-0)+  (precedes ((0 1) (4 0)) ((1 1) (0 2)) ((2 1) (1 0)) ((3 1) (2 0))+    ((4 1) (2 0)))+  (absent (y h) (y-0 (exp (gen) (mul w y))))+  (non-orig (privk a) (privk b))+  (precur (2 0))+  (uniq-gen y-0)+  (operation nonce-test (added-listener y-0) (mul w y-0) (2 0))+  (traces+    ((recv (exp (gen) (mul w y)))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) (mul w y)) (privk b))+            (exp (gen) (mul w y y-0)))))+      (recv+        (enc (enc (exp (gen) (mul w y)) (exp (gen) y-0) (privk a))+          (exp (gen) (mul w y y-0)))))+    ((recv (exp (gen) (mul w y y-0))) (send (exp (gen) (mul w y y-0))))+    ((recv (cat (exp (gen) y) (mul w y-0)))+      (send (cat (exp (gen) y) (mul w y-0))))+    ((recv h)+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) h (privk b-0)) (exp h y)))))+    ((recv y-0) (send y-0)))+  (label 141)+  (parent 136)+  (unrealized (0 2) (4 0))+  (comment "empty cohort"))++(defskeleton station-weak+  (vars (a b b-0 name) (y x expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) x)) (y y))+  (deflistener (cat (exp (gen) y) x))+  (defstrand weak-init 3 (a a) (b b-0) (h (exp (gen) y)) (x x))+  (precedes ((0 1) (1 0)) ((0 1) (2 1)) ((1 1) (0 2)) ((2 2) (0 2)))+  (absent (y (exp (gen) x)))+  (non-orig (privk a) (privk b))+  (precur (1 0))+  (uniq-gen y)+  (operation generalization deleted (1 0))+  (traces+    ((recv (exp (gen) x))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b))+            (exp (gen) (mul y x)))))+      (recv+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x)))))+    ((recv (cat (exp (gen) y) x)) (send (cat (exp (gen) y) x)))+    ((send (exp (gen) x))+      (recv+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) x) (privk b-0))+            (exp (gen) (mul y x)))))+      (send+        (enc (enc (exp (gen) x) (exp (gen) y) (privk a))+          (exp (gen) (mul y x))))))+  (label 142)+  (parent 139)+  (seen 128)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(defskeleton station-weak+  (vars (a b name) (y y-0 expn))+  (defstrand weak-resp 3 (a a) (b b) (h (exp (gen) y-0)) (y y))+  (deflistener (cat (exp (gen) y) y-0))+  (defstrand weak-resp 2 (b a) (h (exp (gen) y)) (y y-0))+  (precedes ((0 1) (1 0)) ((0 1) (2 0)) ((1 1) (0 2)) ((2 1) (0 2)))+  (absent (y-0 (exp (gen) y)) (y (exp (gen) y-0)))+  (non-orig (privk a) (privk b))+  (precur (1 0))+  (uniq-gen y)+  (operation generalization deleted (1 0))+  (traces+    ((recv (exp (gen) y-0))+      (send+        (cat (exp (gen) y)+          (enc (enc (exp (gen) y) (exp (gen) y-0) (privk b))+            (exp (gen) (mul y y-0)))))+      (recv+        (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))+          (exp (gen) (mul y y-0)))))+    ((recv (cat (exp (gen) y) y-0)) (send (cat (exp (gen) y) y-0)))+    ((recv (exp (gen) y))+      (send+        (cat (exp (gen) y-0)+          (enc (enc (exp (gen) y-0) (exp (gen) y) (privk a))+            (exp (gen) (mul y y-0)))))))+  (label 143)+  (parent 140)+  (seen 129)+  (unrealized)+  (comment "1 in cohort - 0 not yet seen"))++(comment "Nothing left to do")