diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,69 @@
+2020-05-21  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* cpsa.cabal (Version): Tagged as 3.6.6
+
+2020-05-15  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* src/CPSA/Lib/Strand.hs (rlugen): Replaced an incorrect call to
+	originationNodes to be a call to generationNodes.  This fixes a
+	bug when using the ugen predicate in the conclusion of a rule.
+
+2020-05-15  Moses D. Liskov <mliskov@mitre.org>
+
+	* src/CPSA/Lib/Strand.hs (preskelWellFormed): Added a check that
+	all variables used in any terms in any declarations are used in
+	the terms of the traces.
+	* src/CPSA/Lib/Strand.hs (verbosePreskelWellFormed): Made a similar
+	change, but without removing existing more specific messages that
+	may be informative for users.
+
+2020-04-15  Joshua D. Guttman  <guttman@mitre.org>
+
+	* src/CPSA/Lib/Strand.hs (graphCloseAll):  Added a procedure to
+	generate a transitive closure that includes pairs on the same
+	strand.  Adapted gprec to use it.
+
+2020-04-02  Ian D. Kretz  <ikretz@mitre.org>
+
+	* src/CPSA/Latex/Main.hs (main): Remove number from pubk, privk
+	newcommand
+
+2020-03-31  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* src/CPSA/SAS/SAS.hs (Preskel): Added support for unique
+	generation assertions.
+
+2020-03-20  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* cpsa.cabal (Version): Update version number as 3.6.6
+
+2020-03-04  Moses D. Liskov  <mliskov@mitre.org>
+
+	* src/CPSA/Prot/Main.hs (main): Added support for state to
+	cpsaprot.
+
+2020-02-27  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* src/CPSA/Lib/Strand.hs (probIsomorphic): Added quick checks for
+	thinning isomorphism check.
+
+2020-02-20  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* src/CPSA/Prot/Main.hs (main):  Improved error messages and added
+	(chmsg TERM) form for channel messages and clone for roles.
+
+2020-02-13  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* src/CPSA/Prot/Main.hs (main):  Added cpsaprot program.
+
+2020-02-11  Kretz, Ian D <ikretz@mitre.org>
+
+	* src/CPSA/LaTeX/Main.hs (main):  Added cpsa2latex program.
+
+2019-11-26  John D. Ramsdell  <ramsdell@mitre.org>
+
+	* src/CPSA/GoalSat/Main.hs: Added cpsagoalsat program.
+
 2019-11-12  John D. Ramsdell  <ramsdell@mitre.org>
 
 	* cpsa.cabal (Version): Tagged as 3.6.5
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -3,11 +3,10 @@
 # The all target creates a default configuration if need be.
 
 PACKAGE := $(wildcard *.cabal)
-CONFIG	= dist/setup-config
-SETUP	= runhaskell Setup.hs
+CONFIG	= configured
 
 all:	$(CONFIG)
-	$(SETUP) build
+	cabal build
 
 Makefile:
 	@echo make $@
@@ -16,9 +15,14 @@
 	@echo make $@
 
 $(CONFIG):	$(PACKAGE)
-	$(SETUP) configure $(CABALFLAGS) --ghc --user --prefix="${HOME}"
+	cabal configure
+	touch $(CONFIG)
 
+clean:
+	-rm $(CONFIG)
+	cabal clean
+
 %:	force
-	$(SETUP) $@
+	cabal $@
 
-.PHONY:	all force
+.PHONY:	all clean force
diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,16 @@
 CPSA NEWS
 
+  May 2020:
+
+* Release 3.6.6 adds a powerful feature: the cpsaprot preprocessing
+  tool.  This allows you to specify protocols in cpsa via a more
+  intuitive "Alice and Bob" notation where you specify messages being
+  sent from one role to another.  The cpsaprot tool builds the
+  standard defprotocol from this specification, which can then be run
+  through the main CPSA tool.  This helps to reduce duplications in
+  the input files actually created by humans and thus reduces the
+  occurrence of accidental errors in input.
+
   November 2019:
 
 * Release 3.6.5 is a bug fix release.  There are no user visible
diff --git a/README.txt b/README.txt
--- a/README.txt
+++ b/README.txt
@@ -39,42 +39,28 @@
 
 INSTALLING FROM A TARBALL
 
-QUICK START (Linux)
+Build and install with:
 
-: To build and install CPSA type:
-$ make
-$ make install
+$ cabal configure
+$ cabal build
+$ cabal install
+: To find the directory containing documentation and samples, type:
+$ cpsa4 -h
 
+QUICK START (Linux)
+
 : To analyze a protocol you have put in prob.scm type:
 $ cpsa -o prob.txt prob.scm
 $ cpsagraph -o prob.xhtml prob.txt
 $ firefox -remote "openFile(`pwd`/prob.xhtml)"
 
-: Documentation and samples are in the directory given by
-$ cpsa -h
-
-: To view the user guide:
-$ firefox -remote "openFile($HOME/share/cpsa-X.Y.Z/doc/cpsauser.html)"
-: where X.Y.Z is the CPSA version number.
-
 QUICK START (Mac)
 
-: To build and install CPSA type:
-$ make
-$ make install
-
 : To analyze a protocol you have put in prob.scm type:
 $ cpsa -o prob.txt prob.scm
 $ cpsagraph -o prob.xhtml prob.txt
 $ open prob.xhtml
 
-: Documentation and samples are in the directory given by
-$ cpsa -h
-
-: To view the user guide:
-$ open $HOME/share/cpsa-X.Y.Z/doc/cpsauser.html
-: where X.Y.Z is the CPSA version number.
-
 QUICK START (Windows)
 
 With Cygwin or MinGW, the installation is similar to the Linux
@@ -98,19 +84,20 @@
 
 MAKEFILE
 
-The file $HOME/share/cpsa-X.Y.Z/doc/cpsa.mk contains useful GNU Make
-rules for inclusion, where X.Y.Z is CPSA version number.
+To start your own project, create a fresh directory and then type:
 
-Alternatively, copy the file Make.hs in the same directory into the
-directory containing your CPSA problem statements.  The source file
-has usage instructions.
+$ cpsainit
 
+This will create a Makefile that automates the analysis process.  For
+Windows, it will also create Make4.hs, a cpsa build script written in
+Haskell.
+
 PARALLELISM
 
 CPSA is built so it can make use of multiple processors.  To make use
-of more than one processor, start CPSA with a runtime flag that
-specifies the number of processors to be used, such as "+RTS -N4
--RTS".  The GHC documentation describes the -N option in detail.
+of more than one processor, start CPSA with the -N runtime flag, as in
+"+RTS -N -RTS".  The GHC documentation describes the -N option in
+detail.
 
 TEST SUITE
 
@@ -128,11 +115,11 @@
 ADDITIONAL PROGRAMS
 
 The src directory of the source distributions includes programs
-written in Scheme, Prolog, and Elisp for performing tasks.  Use them
-as templates for your special purpose CPSA analysis and transformation
-needs.  Also, when given the --json option, the CPSA pretty printer
-cpsapp will transform CPSA S-expressions into JavaScript Object
-Notation (JSON).
+written in Scheme, Prolog, Elisp, and OCaml for performing tasks.  Use
+them as templates for your special purpose CPSA analysis and
+transformation needs.  Also, when given the --json option, the CPSA
+pretty printer cpsapp will transform CPSA S-expressions into
+JavaScript Object Notation (JSON).
 
 On Linux, the GHC runtime can request so much memory that thrashing
 results.  The script in src/ghcmemlimit sets an environment variable
diff --git a/cpsa.cabal b/cpsa.cabal
--- a/cpsa.cabal
+++ b/cpsa.cabal
@@ -1,7 +1,7 @@
 Name:                   cpsa
-Version:                3.6.5
+Version:                3.6.6
 Maintainer:             mliskov@mitre.org
-Cabal-Version:          >= 1.6
+Cabal-Version:          >= 1.10
 License:                BSD3
 License-File:           license.txt
 Synopsis:               Symbolic cryptographic protocol analyzer
@@ -75,14 +75,14 @@
   examples/eq_test.xhtml
 Data-Dir:               doc
 Extra-Source-Files:
-  Makefile ChangeLog README.txt NEWS ghci cpsatst setup.bat
+  Makefile ChangeLog README.txt NEWS mkghci cpsatst setup.bat
   src/cpsa.el src/cpsaops.scm src/cpsa.pl src/pp.pl
   src/sexpr.pl src/ghcmemlimit src/cpsajson.py src/split.py
   src/ocaml/Makefile src/ocaml/README src/ocaml/cpsa.d.itarget
   src/ocaml/cpsa.itarget src/ocaml/cpsa.mllib src/ocaml/cpsa.mltop
   src/ocaml/cpsa.odocl src/ocaml/expand.ml src/ocaml/main.ml
-  src/ocaml/main.mli src/ocaml/pp.ml src/ocaml/reader.ml
-  src/ocaml/reader.mli src/ocaml/scanner.mll src/ocaml/sexpr.ml
+  src/ocaml/main.mli src/ocaml/pp.ml src/ocaml/token.ml
+  src/ocaml/token.mli src/ocaml/scanner.mll src/ocaml/sexpr.ml
   src/ocaml/sexpr.mli src/ocaml/sexpr_type.ml
   tst/checktst tst/updatetst tst/graphtst
   tst/Makefile tst/Make.hs tst/README
@@ -117,6 +117,7 @@
   tst/ordered.scm tst/ordered.tst tst/prottrans.scm tst/prottrans.tst
   tst/role_uniq.scm tst/role_uniq.tst tst/rule-order.scm
   tst/rule-order.tst tst/trust-anchor.scm tst/trust-anchor.tst
+  tst/blanchet_doorsep.prot tst/blanchet_doorsep.tst
   
 Source-Repository head
   Type:     git
@@ -124,6 +125,7 @@
 
 Executable cpsa
   Main-Is:              CPSA/Lib/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 4 && < 5, containers, parallel
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports -threaded -rtsopts
@@ -139,6 +141,7 @@
 
 Executable cpsagraph
   Main-Is:              CPSA/Graph/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 4 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -153,6 +156,7 @@
 
 Executable cpsashapes
   Main-Is:              CPSA/Shapes/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 4 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -164,6 +168,7 @@
 
 Executable cpsaannotations
   Main-Is:              CPSA/Annotations/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 4 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -176,6 +181,7 @@
     
 Executable cpsadiff
   Main-Is:              CPSA/Diff/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 3 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -187,6 +193,7 @@
 
 Executable cpsasas
   Main-Is:              CPSA/SAS/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 4 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -196,8 +203,21 @@
     CPSA.Lib.Printer CPSA.Lib.Entry CPSA.Lib.Algebra CPSA.SAS.SAS
     CPSA.Basic.Algebra CPSA.DiffieHellman.Algebra
 
+Executable cpsaprot
+  Main-Is:              CPSA/Prot/Main.hs
+  Default-Language:     Haskell2010
+  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 CPSA.Lib.Expand
+
 Executable cpsapp
   Main-Is:              CPSA/Pretty/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 3 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -209,6 +229,7 @@
 
 Executable cpsajson
   Main-Is:              CPSA/JSON/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 3 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -220,6 +241,7 @@
 
 Executable cpsadebase
   Main-Is:              CPSA/Debase/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 3 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -231,6 +253,7 @@
 
 Executable cpsamatch
   Main-Is:              CPSA/Match/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base >= 4 && < 5, containers
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
@@ -242,9 +265,34 @@
 
 Executable cpsainit
   Main-Is:              CPSA/Init/Main.hs
+  Default-Language:     Haskell2010
   Build-Depends:        base, directory
   GHC-Options:
     -Wall -fno-warn-name-shadowing -fwarn-unused-imports
   Hs-Source-Dirs:       src
   Other-Modules:
     Paths_cpsa
+
+Executable cpsagoalsat
+  Main-Is:              CPSA/GoalSat/Main.hs
+  Default-Language:     Haskell2010
+  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
+
+Executable cpsa2latex
+  Main-Is:              CPSA/Latex/Main.hs
+  Default-Language:     Haskell2010
+  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.SExpr CPSA.Lib.Expand CPSA.Lib.Entry
+    CPSA.Basic.Algebra CPSA.Lib.Algebra CPSA.Lib.Pretty
+    CPSA.Lib.Printer CPSA.Lib.Utilities
diff --git a/cpsatst b/cpsatst
--- a/cpsatst
+++ b/cpsatst
@@ -1,13 +1,52 @@
 #! /bin/sh
 
 # This script runs the test suite, and then reduces the data for
-# inspection.  If make fails, something is very wrong.  If differences
-# appear in the output, there might be a problem.
+# inspection.  If you see "cpsa failed", something is very wrong.  If
+# differences appear in the output, there might be a problem.
 
 # The following scripts in the tst directory might also serve as a
 # template for your needs, but probably not.  Look at doc/cpsa.mk
 # first.
 
-cd tst
-make clean
-make "$@"
+# ./cpsashapesall
+# ./cpsagraphall
+
+CPSAFLAGS="+RTS -M512m -N -RTS"
+
+# Analyze the results of a CPSA run.
+analyze () {
+    echo cpsadiff "$1.tst" "$1.txt"
+    cabal run cpsadiff -v0 -- "$1.tst" "$1.txt"
+    echo cpsagraph -o "$1.xhtml" "$1.txt"
+    cabal run cpsagraph -v0 -- -o "$1.xhtml" "$1.txt"
+    echo cpsashapes -o "${1}_shapes.txt" "$1.txt"
+    cabal run cpsashapes -v0 -- -o "${1}_shapes.txt" "$1.txt"
+    echo cpsagraph -o "${1}_shapes.xhtml" "${1}_shapes.txt"
+    cabal run cpsagraph -v0 -- -o "${1}_shapes.xhtml" "${1}_shapes.txt"
+}
+
+for i in tst/*.scm
+do
+    b=tst/`basename "$i" .scm`
+    echo cpsa ${CPSAFLAGS} -o "$b.txt" "$i"
+    cabal run cpsa -v0 -- ${CPSAFLAGS} -o "$b.txt" "$i" || echo cpsa failed.
+    analyze "$b"
+done
+
+for i in tst/*.prot
+do
+    b=tst/`basename "$i" .prot`
+    echo cpsaprot  "$i" '|' cpsa ${CPSAFLAGS} -o "$b.txt"
+    cabal run cpsaprot -v0 -- "$i" | \
+	cabal run cpsa -v0 -- ${CPSAFLAGS} -o "$b.txt" || \
+	echo cpsa failed.
+    analyze "$b"
+done
+
+for i in tst/*.lsp
+do
+    b=tst/`basename "$i" .lsp`
+    echo cpsa ${CPSAFLAGS} -o "$b.txt" "$i"
+    cabal run cpsa -v0 -- ${CPSAFLAGS} -o "$b.txt" "$i"
+    analyze "$b"
+done
diff --git a/doc/cpsa.mk b/doc/cpsa.mk
--- a/doc/cpsa.mk
+++ b/doc/cpsa.mk
@@ -7,6 +7,10 @@
 %.txt:		%.scm
 	$(CPSATIME) cpsa $(CPSAFLAGS) -o $@ $<
 
+# Preprocess by transforming defprot forms into defprotocol
+%.scm:		%.prot
+	cpsaprot $(CPSAPROTFLAGS) -o $@ $<
+
 # Analyze protocols for shapes, but don't fail when CPSA does
 %.txt:		%.lsp
 	-$(CPSATIME) cpsa $(CPSAFLAGS) -o $@ $<
diff --git a/doc/cpsamanual.pdf b/doc/cpsamanual.pdf
Binary files a/doc/cpsamanual.pdf and b/doc/cpsamanual.pdf differ
diff --git a/doc/init/Makefile b/doc/init/Makefile
--- a/doc/init/Makefile
+++ b/doc/init/Makefile
@@ -1,12 +1,12 @@
-CPSAFLAGS = +RTS -M512m -N1 -RTS
-CPSATIME = time
+CPSAFLAGS = +RTS -M512m -N -RTS
 
-SRCS := $(wildcard *.scm) $(wildcard *.lsp)
+SRCS := $(wildcard *.scm) $(wildcard *.prot) $(wildcard *.lsp)
 
 include cpsa.mk
 
-all:    $(SRCS:%.scm=%_shapes.xhtml) $(SRCS:%.scm=%.xhtml) \
-        $(SRCS:%.lsp=%_shapes.xhtml) $(SRCS:%.lsp=%.xhtml)
+all:	$(SRCS:%.scm=%_shapes.xhtml) $(SRCS:%.scm=%.xhtml) \
+	$(SRCS:%.prot=%_shapes.xhtml) $(SRCS:%.prot=%.xhtml) \
+	$(SRCS:%.lsp=%_shapes.xhtml) $(SRCS:%.lsp=%.xhtml)
 
 clean:
 	-rm *.txt *.xhtml
diff --git a/ghci b/ghci
deleted file mode 100644
--- a/ghci
+++ /dev/null
@@ -1,5 +0,0 @@
-:set -isrc:dist/build/autogen:dist/build/cpsa/autogen
-:set -fbreak-on-error
-:set args tst/dh_mim.scm
--- ghci src/CPSA/Lib/Main.hs
--- :trace main
diff --git a/mkghci b/mkghci
new file mode 100644
--- /dev/null
+++ b/mkghci
@@ -0,0 +1,9 @@
+#! /bin/sh
+autogen=`find . -name autogen -type d | grep '/cpsa/'`
+
+echo ':set' "-isrc:$autogen"
+echo ':set -fbreak-on-error'
+echo ':set' args ${1:-bug.scm}
+echo '-- ghci src/CPSA/Main.hs'
+echo '-- :trace main'
+
diff --git a/src/CPSA/GoalSat/Main.hs b/src/CPSA/GoalSat/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/GoalSat/Main.hs
@@ -0,0 +1,179 @@
+-- Identify unsatisfied skeletons
+
+-- 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 Numeric
+import System.IO
+import System.Console.GetOpt
+import CPSA.Lib.SExpr
+import CPSA.Lib.Printer (pp)
+import CPSA.Lib.Entry
+
+-- Runtime parameters
+
+data Params = Params
+    { file :: Maybe FilePath,   -- Nothing specifies standard output
+      margin :: Int }           -- Output line length
+    deriving Show
+
+defaultIndent :: Int
+defaultIndent = optIndent defaultOptions
+
+defaultMargin :: Int
+defaultMargin = optMargin defaultOptions
+
+main :: IO ()
+main =
+    do
+      (p, params) <- start options interp
+      h <- outputHandle $ file params
+      go (writeCpsaLn (pp (margin params) defaultIndent) h) p
+      hClose h
+
+writeCpsaLn :: (SExpr a -> String) -> Handle -> SExpr a -> IO ()
+writeCpsaLn printer h sexpr =
+    hPutStrLn h $ printer sexpr
+
+-- Command line option flags
+data Flag
+    = Help                      -- Help
+    | Info                      -- Version information
+    | Margin String             -- Output line length
+    | Output String             -- Output file name
+      deriving Show
+
+options :: [OptDescr Flag]
+options =
+    [ Option ['o'] ["output"]   (ReqArg Output "FILE") "output FILE",
+      Option ['m'] ["margin"]   (ReqArg Margin "INT")
+      ("set output margin (default " ++ show defaultMargin ++ ")"),
+      Option ['h'] ["help"]     (NoArg Help)           "show help message",
+      Option ['v'] ["version"]  (NoArg Info)           "show version number" ]
+
+-- Interpret option flags
+interp :: [Flag] -> IO Params
+interp flags =
+    loop flags (Params { file = Nothing, -- By default, no output file
+                         margin = defaultMargin })
+    where
+      loop [] params = return params
+      loop (Output name : flags) params
+          | file params == Nothing =
+              loop flags $ params { file = Just name }
+      loop (Margin value : flags) params =
+          case readDec value of
+            [(margin, "")] ->
+                loop flags $ params { margin = margin }
+            _ ->
+                do
+                  msg <- usage options ["Bad value for margin\n"]
+                  abort msg
+      loop (Info : _) _ =
+          success cpsaVersion
+      loop (Help : _) _ =
+          do                    -- Show help then exit with success
+            msg <- usage options []
+            success msg
+      loop _ _ =
+           do                   -- Show help then exit with failure
+             msg <- usage options ["Bad option combination\n"]
+             abort msg
+
+-- Entry point for finding unsatisfied skeletons
+go :: (SExpr () -> IO ()) -> PosHandle -> IO ()
+go pp p =
+  pov pp p
+
+-- Look for a point of view that contains a goal.
+pov :: (SExpr () -> IO ()) -> PosHandle -> IO ()
+pov pp p =
+  do
+    x <- gentlyReadSExpr p
+    case x of
+      Nothing ->
+        return ()
+      Just sexpr ->
+        case sexpr of
+          L _ (S _ "defskeleton" : _ : xs) ->
+            case label xs of    -- Get laber
+              Nothing ->
+                abort "Skeleton without a label"
+              Just lab ->       -- See if it has goals
+                if hasKey "goals" xs then
+                  skel pp p [lab] -- Has a goal
+                else
+                  prot pp p     -- Else skip this problem
+          _ ->
+            pov pp p
+
+-- Get the label number of a skeleton
+label :: [SExpr a] -> Maybe Int
+label xs =
+  case assoc "label" xs of
+    [N _ lab] ->
+      Just lab
+    _ ->
+      Nothing
+
+-- Search for next protocol definition
+prot :: (SExpr () -> IO ()) -> PosHandle -> IO ()
+prot pp p =
+  do
+    x <- gentlyReadSExpr p
+    case x of
+      Nothing ->
+        return ()
+      Just sexpr ->
+        case sexpr of
+          L _ (S _ "defprotocol" : _ ) ->
+            pov pp p
+          _ ->
+            prot pp p
+
+-- Look for skeleton that are unsatisfied.
+skel :: (SExpr () -> IO ()) -> PosHandle -> [Int] -> IO ()
+skel pp p sats =
+  do
+    x <- gentlyReadSExpr p
+    case x of
+      Nothing ->
+        return ()
+      Just sexpr ->
+        case sexpr of
+          L _ (S _ "defskeleton" : _ : xs) ->
+            if unsat xs then    -- If skeleton is unsatisfied
+              case label xs of
+                Nothing ->
+                  abort "Skeleton without a label"
+                Just lab ->     -- Then add its label to the list
+                  skel pp p (lab : sats)
+            else                -- Skeleton okay
+              skel pp p sats
+          _ ->                  -- Not a skeleton
+            do                  -- Print results
+              pp (L () (map (N ()) (reverse sats)))
+              pov pp p          -- And then search for POV
+
+-- Is skeleton unsatisfied?
+unsat :: [SExpr a] -> Bool
+unsat xs =                      -- Satisfies entry has at least
+  hasKey "no" $ assoc "satisfies" xs -- one no
+
+-- Lookup value in alist, appending values with the same key
+assoc :: String -> [SExpr a] -> [SExpr a]
+assoc key alist =
+    concat [ rest | L _ (S _ head : rest) <- alist, key == head ]
+
+-- See if alist has a key
+hasKey :: String -> [SExpr a] -> Bool
+hasKey key alist =
+    any f alist
+    where
+      f (L _ (S _ head : _)) = head == key
+      f _ = False
diff --git a/src/CPSA/Latex/Main.hs b/src/CPSA/Latex/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Latex/Main.hs
@@ -0,0 +1,252 @@
+-- Convert macros into LaTeX macros
+
+-- Copyright (c) 2020 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 Data.List
+import System.Environment
+import System.IO
+import System.Console.GetOpt
+import Control.Monad
+import CPSA.Lib.SExpr
+import CPSA.Lib.Expand
+import CPSA.Lib.Entry hiding (defaultOptions, Options, optFile)
+
+main :: IO ()
+main =
+  do
+    argv <- getArgs
+    (flags, files) <- opts options argv
+    opts <- interp defaultOptions flags
+    p <- openInput files
+    sexprs <- readSExprs p
+    macros <- macroExtract sexprs
+    let filtered = macroFilter macros
+    outputResults opts (reverse $ map translateMacro filtered)
+
+-- Command line option flags
+data Flag
+    = Output String
+    | Help
+    | Info
+      deriving Show
+
+data Options = Options {
+  optFile :: Maybe FilePath
+  }
+  deriving Show
+
+defaultOptions :: Options
+defaultOptions = Options {
+  optFile = Nothing
+  }
+
+options :: [OptDescr Flag]
+options =
+  [ Option ['o'] ["output"]  (ReqArg Output "FILE") "output FILE",
+    Option ['h'] ["help"]    (NoArg Help)           "show help message",
+    Option ['v'] ["version"] (NoArg Info)           "show version number" ]
+
+opts :: [OptDescr a] -> [String] -> IO ([a], [String])
+opts options argv =
+    case getOpt RequireOrder options argv of
+      (o, n, []) -> return (o, n)
+      (_, _, errs) ->
+          do
+            msg <- usage options errs
+            abort msg
+
+-- Interpret option flags
+interp :: Options -> [Flag] -> IO Options
+interp opts flags =
+  loop flags opts
+  where
+    loop [] opts = return opts
+    loop (Output name : flags) opts
+      | optFile opts == Nothing =
+          loop flags $ opts { optFile = Just name }
+    loop (Help : _) _ =
+          do                    -- Show help then exit with success
+            msg <- usage options []
+            success msg
+    loop (Info : _) _ =
+          success cpsaVersion
+    loop _ _ =
+           do                   -- Show help then exit with failure
+             msg <- usage options ["Bad option combination\n"]
+             abort msg
+
+openInput :: [String] -> IO PosHandle
+openInput [file] =
+    do                          -- Input from named file
+      input <- openFile file ReadMode
+      posHandle file input
+openInput [] =
+    posHandle "" stdin          -- Input from the standard input
+openInput _ =
+    do
+      msg <- usage options ["too many input files\n"]
+      abort msg
+
+-- Write results to specified output location
+outputResults :: Options -> [String] -> IO ()
+outputResults opts rs =
+  do
+    h <- outputHandle (optFile opts)
+    mapM_ (hPutStrLn h) rs
+    hClose h
+    return ()
+
+-- The mechanisms for translating from CPSA to LaTeX are below
+
+-- Extract the macros from a list of SExprs
+macroExtract :: [SExpr Pos] -> IO [Macro]
+macroExtract sexprs = do
+  (mList, _) <- foldM (expandSExpr bound) ([], []) sexprs
+  return mList
+
+-- Get rid of splices
+macroRemoveSplices :: [Macro] -> [Macro]
+macroRemoveSplices [] = []
+macroRemoveSplices (m:ms) =
+  case (getMacroBody m) of
+    L _ (S _ "^":_) -> macroRemoveSplices ms
+    _ -> m:(macroRemoveSplices ms)
+
+-- Get rid of defprotocols
+macroRemoveDefprotocols :: [Macro] -> [Macro]
+macroRemoveDefprotocols [] = []
+macroRemoveDefprotocols (m:ms) =
+  case (getMacroBody m) of
+    L _ (S _ "defprotocol":_) -> macroRemoveDefprotocols ms
+    _ -> m:(macroRemoveDefprotocols ms)
+
+-- Get rid of defroles
+macroRemoveDefroles :: [Macro] -> [Macro]
+macroRemoveDefroles [] = []
+macroRemoveDefroles (m:ms) =
+  case (getMacroBody m) of
+    L _ (S _ "defrole":_) -> macroRemoveDefroles ms
+    _ -> m:(macroRemoveDefroles ms)
+
+-- Get rid of rules
+macroRemoveRules :: [Macro] -> [Macro]
+macroRemoveRules [] = []
+macroRemoveRules (m:ms) =
+  case (getMacroBody m) of
+    L _ (S _ "defrule":_) -> macroRemoveRules ms
+    _ -> m:(macroRemoveRules ms)
+
+-- Get rid of goals
+macroRemoveGoals ::  [Macro] -> [Macro]
+macroRemoveGoals [] = []
+macroRemoveGoals (m:ms) =
+  case (getMacroBody m) of
+    L _ (S _ "defgoal":_) -> macroRemoveGoals ms
+    _ -> m:(macroRemoveGoals ms)
+
+-- Composition of the preceding three functions
+macroFilter :: [Macro] -> [Macro]
+macroFilter = macroRemoveDefroles .
+              macroRemoveDefprotocols .
+              macroRemoveGoals .
+              macroRemoveRules .
+              macroRemoveSplices
+
+-- Given a macro, return the count of its args
+macroArgsCount :: Macro -> Int
+macroArgsCount = length . getMacroArgs
+
+-- Translate an SExpr into a String and a final translation
+-- environment given some initial environment
+translateSExpr :: [(String, String)] -> SExpr a -> (String, [(String, String)])
+translateSExpr e (S _ s) =
+  case (lookup s e) of
+    Nothing -> let t = (translateSymbol s) in (t, (s,t):e)
+    Just t -> (t, e)
+translateSExpr e (Q _ s) = let t = translateQuotedStr s in (t, (s,t):e)
+translateSExpr e (N _ n) = (translateInt n, e)
+translateSExpr e (L _ []) = ("", e)
+translateSExpr e (L _ (S _ "cat":ys)) =
+  (intercalate "\\cat " xs, e1)
+  where
+    (xs, e1) = translateSExprFold e ys
+translateSExpr e (L p (S q "enc":ys)) =
+  ("\\enc{" ++ s1 ++ "}{" ++ s2 ++ "}", e2)
+  where
+    (s2, e1) = translateSExpr e (last ys)
+    (s1, e2) = translateSExpr e1 (L p (S q "cat":init ys))
+translateSExpr e (L p (S q "hash":ys)) =
+  ("\\hash{" ++ s ++ "}", e')
+  where
+    (s, e') = translateSExpr e (L p (S q "cat":ys))
+translateSExpr e (L _ [S _ "pubk", y1, y2]) =
+  case translateSExprFold e [y1, y2] of
+    ([s1, s2], e1) ->
+      ("\\pubktwo{" ++ s1 ++ "}{" ++ s2 ++ "}", e1)
+    _ ->
+      error "translateSExpr: bad fold for pubktwo"
+translateSExpr e (L _ [S _ "privk", y1, y2]) =
+  case translateSExprFold e [y1, y2] of
+    ([s1, s2], e1) ->
+      ("\\privktwo{" ++ s1 ++ "}{" ++ s2 ++ "}", e1)
+    _ ->
+      error "translateSExpr: bad fold for privktwo"
+translateSExpr e (L _ ys) =
+  (concat xs, e1)
+  where
+    (xs, e1) = translateSExprFold e ys
+
+translateSExprFold :: [(String, String)] -> [SExpr a] ->
+                      ([String], [(String, String)])
+translateSExprFold e ys = (xs, e')
+  where
+    (xs, e') = foldr f ([], e) ys
+    f y (acc, env) = (x:acc, e'')
+      where (x, e'') = translateSExpr env y
+
+-- Translate a CPSA macro into an equivalent LaTeX macro
+translateMacro :: Macro -> String
+translateMacro m =
+  let name = toMathMode $ getMacroName m
+      args = getMacroArgs m
+      argc = macroArgsCount m
+      body = getMacroBody m
+      env = zip args ["{#" ++ (show i) ++ "}" | i <- [(1::Int)..]]
+      prelude = "\\newcommand{\\"
+      l = "}["
+      r = "]{"
+  in prelude++name++l++(show argc)++r++(fst $ translateSExpr env body)++"}"
+
+-- Symbol to String translation rules
+translateSymbol :: String -> String
+translateSymbol s = "\\" ++ (toMathMode s)
+
+-- Quoted string to String translation rules
+translateQuotedStr :: String -> String
+translateQuotedStr s = "\\tag{" ++ s' ++ "}"
+  where s' = toMathModeSpaced s
+
+-- Delete chars LaTeX math mode doesn't like
+toMathMode :: String -> String
+toMathMode s = [c | c<-s, not (c `elem` badChars)]
+  where badChars = " -"
+
+-- Int to String translation rules
+translateInt :: Int -> String
+translateInt n = show n
+
+-- Replace chars LaTeX math mode doesn't like with "\\ "
+toMathModeSpaced :: String -> String
+toMathModeSpaced s = intercalate "\\ " (f s)
+  where badChars = " -"
+        f :: String -> [String]
+        f s = case dropWhile (`elem` badChars) s of
+          "" -> []
+          s' -> w : f s''
+            where (w, s'') = break (`elem` badChars) s'
diff --git a/src/CPSA/Lib/Declaration.hs b/src/CPSA/Lib/Declaration.hs
--- a/src/CPSA/Lib/Declaration.hs
+++ b/src/CPSA/Lib/Declaration.hs
@@ -13,7 +13,7 @@
         dterms, dlocs, daux, declInst, declInstAux, DeclInst, dkugenFull,
         dkabsent, declsTerms, addDeclInst, declMember, nsdecls,
         DeclInstList, Declaration, DeclInFormat(..), DeclOutFormat(..),
-        DeclList, declarationRoleTags,
+        DeclList, declarationRoleTags, 
 --        BasicOutFmt, MultiTermOutFmt, NullOutFmt, BasicRoleOutFmt, GeneralOutFmt,
 --        BasicInFmt, MultiTermInFmt, NullInFmt, TwoTermInFmt,
         declCheck, Loc, avoidTerms,
@@ -460,3 +460,5 @@
    where
      failures = [t1 | (tag1,t1) <- pairs, (tag2,t2) <- pairs, t1 == t2, tag1 /= tag2]
      pairs = map (\ di -> (daux di, head $ dterms di)) $ tagDecls "subsort" decls
+
+
diff --git a/src/CPSA/Lib/Expand.hs b/src/CPSA/Lib/Expand.hs
--- a/src/CPSA/Lib/Expand.hs
+++ b/src/CPSA/Lib/Expand.hs
@@ -12,7 +12,9 @@
 #define MonadFail Monad
 #endif
 
-module CPSA.Lib.Expand (expand, readSExprs) where
+module CPSA.Lib.Expand (expand, readSExprs, Macro,
+                        expandSExpr, bound, getMacroName,
+                        getMacroArgs, getMacroBody) where
 
 import Control.Monad
 import System.IO (openFile, IOMode (ReadMode))
@@ -87,6 +89,15 @@
     { name :: String,
       args :: [String],
       body :: SExpr Pos }
+
+getMacroName :: Macro -> String
+getMacroName (Macro {name=n, args=_, body=_}) = n
+
+getMacroArgs :: Macro -> [String]
+getMacroArgs (Macro {name=_, args=a, body=_}) = a
+
+getMacroBody :: Macro -> SExpr Pos
+getMacroBody (Macro {name=_, args=_, body=b}) = b
 
 defmacro :: MonadFail m => Pos -> [SExpr Pos] -> m Macro
 defmacro _ [L _ (name : args), body] =
diff --git a/src/CPSA/Lib/Loader.hs b/src/CPSA/Lib/Loader.hs
--- a/src/CPSA/Lib/Loader.hs
+++ b/src/CPSA/Lib/Loader.hs
@@ -558,10 +558,22 @@
     case x of
       S _ role : N _ height : env ->
           do
-            (gen, i) <- loadInst pos p kvars gen role height env
+            (gen, i) <- loadInst pos p kvars gen role height env False
             loadInsts top p kvars gen (i : insts) xs
       _ ->
           fail (shows pos "Malformed defstrand")
+loadInsts top p kvars gen insts (L pos (S _ "defstrandmax" : x) : xs) =
+    case x of
+      S _ role : N _ height : env ->
+          do
+            (gen, i) <- loadInst pos p kvars gen role height env True
+            loadInsts top p kvars gen (i : insts) xs
+      S _ role : env ->
+          do
+            (gen, i) <- loadInst pos p kvars gen role 0 env True
+            loadInsts top p kvars gen (i : insts) xs
+      _ ->
+          fail (shows pos "Malformed defstrandmax")
 loadInsts top p kvars gen insts (L pos (S _ "deflistener" : x) : xs) =
     case x of
       [term] ->
@@ -572,7 +584,7 @@
           fail (shows pos "Malformed deflistener")
 loadInsts top p kvars gen insts xs =
     do
-      badKey ["defstrand", "deflistener"] xs
+      badKey ["defstrand", "deflistener", "defstrandmax"] xs
       _ <- alist [] xs          -- Check syntax of xs
       others <- loadGenSkelDecls heights kvars (assocDecls xs)
       predefs <- loadAllPredefSkelDecls heights kvars xs
@@ -589,7 +601,7 @@
       goals = assoc "goals" xs
       pov = assoc "pov" xs
       kcomment =
-        loadComment "subgoals" goals ++
+        loadComment "goals" goals ++
         loadComment "comment" (assoc "comment" xs)
 
 loadComment :: String -> [SExpr Pos] -> [SExpr ()]
@@ -624,17 +636,19 @@
 
 loadInst :: (Algebra t p g s e c, MonadFail m) => Pos ->
             Prot t g -> [t] -> g -> String -> Int ->
-            [SExpr Pos] -> m (g, Instance t e)
-loadInst pos p kvars gen role height env =
+            [SExpr Pos] -> Bool -> m (g, Instance t e)
+loadInst pos p kvars gen role height env count_from_max =
     do
       r <- lookupRole pos p role
-      case height < 1 || height > length (rtrace r) of
+      let height' = if count_from_max then ((length (rtrace r)) - height)
+                                      else height
+      case height' < 1 || height' > length (rtrace r) of
         True -> fail (shows pos "Bad height")
         False ->
             do
               let vars = rvars r
               (gen', env') <- foldM (loadMaplet kvars vars) (gen, emptyEnv) env
-              return (mkInstance gen' r env' height)
+              return (mkInstance gen' r env' height')
 
 lookupRole :: MonadFail m => Pos -> Prot t g -> String -> m (Role t)
 lookupRole _ p role  | role == "" =
diff --git a/src/CPSA/Lib/Main.hs b/src/CPSA/Lib/Main.hs
--- a/src/CPSA/Lib/Main.hs
+++ b/src/CPSA/Lib/Main.hs
@@ -218,8 +218,8 @@
       Option ['m'] ["margin"]   (ReqArg Margin "INT")
       ("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",
+      "expand macros only; don't load or analyze",
+      Option ['z'] ["noanalyze"] (NoArg NoAnalyze) "load but don't analyze",
       Option ['n'] ["noisochk"] (NoArg NoIsoChk)
       "disable isomorphism checks",
       Option ['c'] ["check-nonces"] (NoArg CheckNoncesFirst)
diff --git a/src/CPSA/Lib/Reduction.hs b/src/CPSA/Lib/Reduction.hs
--- a/src/CPSA/Lib/Reduction.hs
+++ b/src/CPSA/Lib/Reduction.hs
@@ -7,7 +7,7 @@
 -- University of California.
 
 -- Provides the top-level search loop, which implements term reduction
--- on skeletos.
+-- on skeletons.
 
 module CPSA.Lib.Reduction (solve) where
 
@@ -214,20 +214,20 @@
 -- n is the current step count
 -- seen holds the gists of seen skeletons
 -- todo holds unreduced skeletons
--- tobig holds skeletons that have exceed the strand bound.
+-- toobig holds skeletons that have exceed the strand bound.
 breadth :: Algebra t p g s e c => Options -> Handle ->
            [Preskel t g s e] -> Int -> Int -> Seen t g s e ->
            [LPreskel t g s e] -> [LPreskel t g s e] -> IO ()
-breadth p h ks _ n _ [] [] =       -- Empty todo list and tobig list
+breadth p h ks _ n _ [] [] =       -- Empty todo list and toobig list
     do
       wrt p h (comment "Nothing left to do")
       solve p h ks n            -- Solve next problem
-breadth p h _ _ _ _ [] tobig = -- Empty todo list and non-null tobig list
+breadth p h _ _ _ _ [] toobig = -- Empty todo list and non-null toobig list
     do
       wrt p h (comment "Strand bound exceeded--aborting run")
-      dump p h (reverse tobig)  "Strand bound exceeded"
-breadth p h ks m n seen todo tobig =
-    step p h ks m seen n void [] tobig (parMap (branch p seen) todo)
+      dump p h (reverse toobig)  "Strand bound exceeded"
+breadth p h ks m n seen todo toobig =
+    step p h ks m seen n void [] toobig (parMap (branch p seen) todo)
 
 -- Returns the nodes in a preskeleton that are not realized and are at or
 -- above the minimum priority.
@@ -241,23 +241,23 @@
         [Preskel t g s e] -> Int -> Seen t g s e -> Int ->
         Seen t g s e -> [LPreskel t g s e] ->
         [LPreskel t g s e] -> [Reduct t g s e] -> IO ()
-step p h ks m oseen n seen todo tobig [] = -- Empty reducts
-    breadth p h ks m n (merge seen oseen) (reverse todo) tobig
-step p h _ m _ n _ todo tobig reducts
+step p h ks m oseen n seen todo toobig [] = -- Empty reducts
+    breadth p h ks m n (merge seen oseen) (reverse todo) toobig
+step p h _ m _ n _ todo toobig reducts
     | n > m =                   -- Check step count
         do
           wrt p h (comment "Step limit exceeded--aborting run")
-          dump p h (mktodo reducts todo tobig) "Step limit exceeded"
-step p h ks m oseen n seen todo tobig (Reduct lk _ _  _  : reducts)
+          dump p h (mktodo reducts todo toobig) "Step limit exceeded"
+step p h ks m oseen n seen todo toobig (Reduct lk _ _  _  : reducts)
     | nstrands (content lk) >= optBound p = -- Check strand count
-        step p h ks m oseen n seen todo (lk : tobig) reducts
-step p h ks m oseen n seen todo tobig (Reduct lk size kids dups : reducts)
+        step p h ks m oseen n seen todo (lk : toobig) reducts
+step p h ks m oseen n seen todo toobig (Reduct lk size kids dups : reducts)
     | optGoalsSat p && satCheck lk = -- Stop if goals satisfied mode?
         do
           let ns = unrealized (content lk)
           let shape = if null ns then Shape else Fringe
           wrt p h (commentPreskel lk [] ns shape SatisfiesAll "satisfies all")
-          step p h ks m oseen n seen todo tobig reducts
+          step p h ks m oseen n seen todo toobig reducts
     | size <= 0 =               -- Interpret empty reducts
         do
           let ns = unrealized (content lk)
@@ -266,12 +266,12 @@
           wrt p h (commentPreskel lk [] ns shape
                    (if live then Nada else Dead)
                    (if live then "" else "empty cohort"))
-          step p h ks m oseen n seen todo tobig reducts
+          step p h ks m oseen n seen todo toobig reducts
     | optDepth p > 0 && depth lk >= optDepth p =
         do
           let ns = unrealized (content lk)
           wrt p h (commentPreskel lk [] ns Fringe Nada "")
-          step p h ks m oseen n seen todo tobig reducts
+          step p h ks m oseen n seen todo toobig reducts
     | otherwise =
         do
           let (n', seen', todo', dups') =
@@ -281,7 +281,7 @@
           let msg = shows size $ showString " in cohort - " $
                          shows u " not yet seen"
           wrt p h (commentPreskel lk (reverse dups') ns Ordinary Nada msg)
-          step p h ks m oseen n' seen' todo' tobig reducts
+          step p h ks m oseen n' seen' todo' toobig reducts
 
 -- Expands one branch in the derivation tree.
 branch :: Algebra t p g s e c => Options -> Seen t g s e ->
@@ -313,8 +313,8 @@
 mktodo :: [Reduct t g s e] ->
           [LPreskel t g s e] -> [LPreskel t g s e] ->
           [LPreskel t g s e]
-mktodo reducts todo tobig =
-    map (\(Reduct lk _ _ _) -> lk) reducts ++ reverse todo ++ reverse tobig
+mktodo reducts todo toobig =
+    map (\(Reduct lk _ _ _) -> lk) reducts ++ reverse todo ++ reverse toobig
 
 type Next t p g s e c =
     (Int, Seen t g s e, [LPreskel t g s e], [Int])
diff --git a/src/CPSA/Lib/Strand.hs b/src/CPSA/Lib/Strand.hs
--- a/src/CPSA/Lib/Strand.hs
+++ b/src/CPSA/Lib/Strand.hs
@@ -314,13 +314,25 @@
           | elem n seen = loop dst ns seen
           | otherwise = loop dst (preds n ++ ns) (n : seen)
 
--- Compute the transitive closure
+-- Compute the transitive closure,
+-- omitting pairs on the same strand.  
 -- This routine returns pairs that are not well ordered.
 -- Deal with it!
 graphClose :: [GraphEdge e i] -> [GraphEdge e i]
 graphClose orderings =
-    filter (not . sameStrands) (loop orderings False orderings)
+    filter (not . sameStrands) (graphCloseAll orderings)
     where
+      sameStrands (n0, n1) = strand n0 == strand n1
+
+-- Compute the transitive closure
+-- including pairs on the same strand.  
+
+-- This routine returns pairs that are not well ordered.
+-- Deal with it!
+graphCloseAll :: [GraphEdge e i] -> [GraphEdge e i]
+graphCloseAll orderings =
+    loop orderings False orderings
+    where 
       loop orderings False [] = orderings
       loop orderings True [] =
           loop orderings False orderings -- restart loop
@@ -331,8 +343,8 @@
       inner orderings repeat pairs (p : rest)
           | elem p orderings = inner orderings repeat pairs rest
           | otherwise = inner (p : orderings) True pairs rest
-      sameStrands (n0, n1) = strand n0 == strand n1
 
+                             
 {-
 -- The nodes that preceed node n via strand succession
 spreds :: GraphNode e i -> [GraphNode e i]
@@ -798,6 +810,14 @@
 
 probIsomorphic :: Algebra t p g s e c => Preskel t g s e -> Preskel t g s e -> Bool
 probIsomorphic k k' =
+--    nvars g == nvars g' &&  -- Wrong in DH
+    ntraces g == ntraces g' &&
+    briefs g == briefs g' &&
+    norderings g == norderings g' &&
+    gpatterns g == gpatterns g' &&
+    nleadsto g == nleadsto g' &&
+    nsndecls g == nsndecls g' &&
+    nfacts g == nfacts g' &&
     any (tryPermProb g g' pr pr') (permutations g g')
     where
       g = gist k
@@ -2108,18 +2128,16 @@
 
 -- A preskeleton is well formed if the ordering relation is acyclic,
 -- each atom declared to be uniquely-originating is carried in some
--- preskeleton term, and every variable that occurs in each base term
--- declared to be non-originating or pen-non-originating occurs in
--- some preskeleton term, and the atom must never be carried by any
--- term, and every uniquely originating role term mapped by an
--- instance is mapped to a term that originates on the instance's
--- strand.
+-- preskeleton term, and every variable that occurs in any declaration
+-- occurs in some preskeleton term, and none of the declaration-based
+-- constraints are violated, and furthermore, every uniquely
+-- originating role term mapped by an instance is mapped to a term
+-- that originates on that instance's strand.
 
 -- Exported
 preskelWellFormed :: Algebra t p g s e c => Preskel t g s e -> Bool
 preskelWellFormed k =
-    varSubset (knon k) terms &&
-    varSubset (kpnon k) terms &&
+    varSubset (declsTerms (decls k)) terms &&
     all nonCheck (knon k) &&
     all uniqueCheck (kunique k) &&
     all factCheck (kfacts k) &&
@@ -2154,6 +2172,10 @@
                    $ varSubset (knon k) terms
       failwith "a variable in pen-non-orig is not in some trace"
                    $ varSubset (kpnon k) terms
+      failwith "a variable in uniq-gen is not in some trace"
+                   $ varSubset (dkuniqgen (decls k)) terms
+      failwith "a variable in a declaration is not in some trace"
+                   $ varSubset (declsTerms (decls k)) terms
       mapM_ nonCheck $ knon k
       mapM_ uniqueCheck $ kunique k
       mapM_ factCheck $ kfacts k
@@ -2651,7 +2673,7 @@
     f k v
       | elem v (kvars k) = k
       | otherwise = error (s ++ ": Bad var in fact " ++ show v)
-        -- ++ "\n\n" ++ show k)
+        -- ++ "\n\n" ++ show k
 --}
 
 {-
@@ -2822,7 +2844,7 @@
         (g, e) <- nodeMatch n p (g, e)
         nodeMatch n' p' (g, e)
   where
-    tc = map graphPair $ graphClose $ graphEdges $ strands k
+    tc = map graphPair $ graphCloseAll $ graphEdges $ strands k
 
 -- Node leads to
 gleadsTo :: Algebra t p g s e c => NodeTerm t -> NodeTerm t -> Sem t g s e
@@ -3306,7 +3328,7 @@
       | elem t' (dkuniqgen $ decls k) -> [(k, (g, e))]
       | not $ isAtom t' -> []
       | otherwise ->
-        case originationNodes (strands k) t' of
+        case generationNodes (strands k) t' of
           (_, []) -> []
           (_, n : _) ->
             [(k', (g, e))]
diff --git a/src/CPSA/Pretty/Main.hs b/src/CPSA/Pretty/Main.hs
--- a/src/CPSA/Pretty/Main.hs
+++ b/src/CPSA/Pretty/Main.hs
@@ -65,7 +65,6 @@
     = Help                      -- Help
     | Info                      -- Version information
     | Margin String             -- Output line length
-    | Infix                     -- Select output notation
     | Json                      -- Select output format
     | Output String             -- Output file name
       deriving Show
diff --git a/src/CPSA/Prot/Main.hs b/src/CPSA/Prot/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/CPSA/Prot/Main.hs
@@ -0,0 +1,257 @@
+-- Translate protocols in Alice and Bob notation into defprotocol syntax
+
+-- Copyright (c) 2020 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.
+
+{-
+This program translates a protocol expressed in Alice and Bob notation
+into defprotocol syntax.  It translates defprot forms, and passes all
+else through unchanged.  The syntax of a defprot form is:
+
+PROT       ::= (defprot NAME ALGEBRA (vars DECLS) NOTATION* RULE* PROT-ALIST)
+NOTATION   ::= (msg ROLE ROLE CHMSG)
+            |  (msg ROLE ROLE CHMSG CHMSG)
+            |  (from ROLE CHMSG)
+            |  (to ROLE CHMSG)
+            |  (clone ROLE ROLE)
+            |  (assume ROLE ASSUMPTION*)
+CHMSG      ::= (chmsg CHAN TERM) | (chmsg TERM) | TERM
+ASSUMPTION ::= (uniq-orig ...) | (non-orig ...) | ...
+RULE       ::= (defrule ...)
+
+The form (msg A B M) says role A sends M, and role B receives M.
+The form (msg A B M N) says role A sends M, and role B receives N.
+The form (from A M) says role A sends M.
+The form (to A M) says role A receives M.
+The form (clone A B) says make role B have the same messages as A up
+to this point in the specification.
+-}
+
+{-# LANGUAGE CPP #-}
+
+#if !(MIN_VERSION_base(4,13,0))
+#define MonadFail Monad
+#endif
+
+module Main (main) where
+
+import Numeric
+import System.IO
+import System.Console.GetOpt
+import Control.Monad (foldM)
+import CPSA.Lib.SExpr
+import CPSA.Lib.Printer (pp)
+import CPSA.Lib.Entry
+import CPSA.Lib.Expand (readSExprs, expand)
+
+-- Runtime parameters
+
+data Params = Params
+    { file :: Maybe FilePath,   -- Nothing specifies standard output
+      margin :: Int,            -- Output line length
+      doExpand :: Bool}         -- Expand macros first?
+    deriving Show
+
+defaultIndent :: Int
+defaultIndent = optIndent defaultOptions
+
+defaultMargin :: Int
+defaultMargin = optMargin defaultOptions
+
+main :: IO ()
+main =
+    do
+      (p, params) <- start options interp
+      sexprs <- readSExprs p
+      -- Could expand macros here
+      sexprs <- tryAbort (maybeExpand (doExpand params) sexprs)
+      sexprs <- tryAbort (mapM translate sexprs)
+      h <- outputHandle $ file params
+      mapM_ (display (margin params) h) sexprs
+      hClose h
+
+maybeExpand :: Bool -> [SExpr Pos] -> IO [SExpr Pos]
+maybeExpand False sexprs = return sexprs
+maybeExpand True sexprs = expand sexprs
+
+tryAbort :: IO a -> IO a
+tryAbort x =
+  do
+    a <- tryIO x
+    case a of
+      Left err -> abort err
+      Right a -> return a
+
+display :: Int -> Handle -> SExpr a -> IO ()
+display margin h x =
+  do
+    hPutStrLn h $ pp margin defaultIndent x
+    hPutStrLn h ""
+
+-- Command line option flags
+data Flag
+    = Help                      -- Help
+    | Info                      -- Version information
+    | Margin String             -- Output line length
+    | Output String             -- Output file name
+    | Expand                    -- Expand macros
+      deriving Show
+
+options :: [OptDescr Flag]
+options =
+    [ Option ['o'] ["output"]   (ReqArg Output "FILE") "output FILE",
+      Option ['m'] ["margin"]   (ReqArg Margin "INT")
+      ("set output margin (default " ++ show defaultMargin ++ ")"),
+      Option ['e'] ["expand"]   (NoArg Expand)         "expand macros first",
+      Option ['h'] ["help"]     (NoArg Help)           "show help message",
+      Option ['v'] ["version"]  (NoArg Info)           "show version number"]
+
+-- Interpret option flags
+interp :: [Flag] -> IO Params
+interp flags =
+    loop flags (Params { file = Nothing, -- By default, no output file
+                         margin = defaultMargin, doExpand = False})
+    where
+      loop [] params = return params
+      loop (Expand : flags) params =
+              loop flags $ params { doExpand = True }
+      loop (Output name : flags) params
+          | file params == Nothing =
+              loop flags $ params { file = Just name }
+      loop (Margin value : flags) params =
+          case readDec value of
+            [(margin, "")] ->
+                loop flags $ params { margin = margin }
+            _ ->
+                do
+                  msg <- usage options ["Bad value for margin\n"]
+                  abort msg
+      loop (Info : _) _ =
+          success cpsaVersion
+      loop (Help : _) _ =
+          do                    -- Show help then exit with success
+            msg <- usage options []
+            success msg
+      loop _ _ =
+           do                   -- Show help then exit with failure
+             msg <- usage options ["Bad option combination\n"]
+             abort msg
+
+-- Translate one S-expression
+translate :: MonadFail m => SExpr Pos -> m (SExpr ())
+translate (L pos (S _ "defprot" : xs)) =
+  prot pos xs
+translate x = return $ strip x
+
+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)
+
+prot :: MonadFail m => Pos -> [SExpr Pos] -> m (SExpr ())
+prot _ (S _ name : S _ alg : L _ (S _ "vars" : vs) : body) =
+  do
+    let vars = L () (S () "vars" : map strip vs)
+    rs <- roles vars body
+    return
+      (L () (S () "defprotocol" : S () name :
+             S () alg : rs ++ filter scrub (map strip body)))
+prot p _ = fail (shows p "Malformed defprot")
+
+roles :: MonadFail m => SExpr () -> [SExpr Pos] -> m [SExpr ()]
+roles vars body =
+  do
+    env <- foldM msg [] body
+    assumes <- foldM assume [] body
+    return $ map (makeRole vars assumes) env
+
+makeRole :: SExpr () -> Env -> (String, [SExpr ()]) -> SExpr ()
+makeRole vars assumes (name, trace) =
+  L () (S () "defrole" : S () name : vars :
+        L () (S () "trace" : reverse trace) :
+        case lookup name assumes of
+          Nothing -> []
+          Just xs -> reverse xs)
+
+type Env = [(String, [SExpr ()])]
+
+msg :: MonadFail m => Env -> SExpr Pos -> m Env
+msg env (L _ [S _ "msg", S _ from, S _ to, term]) =
+  return (update to (L () (S () "recv" : chmsg term))
+          (update from (L () (S () "send" : chmsg term)) env))
+msg env (L _ [S _ "msg", S _ from, S _ to, fromTerm, toTerm]) =
+  return (update to (L () (S () "recv" : chmsg toTerm))
+          (update from (L () (S () "send" : chmsg fromTerm)) env))
+msg _ (L p (S _ "msg" : _)) =
+  fail (shows p "Malformed msg")
+msg env (L _ [S _ "from", S _ from, term]) =
+  return (update from (L () (S () "send" : chmsg term)) env)
+msg _ (L p (S _ "from" : _)) =
+  fail (shows p "Malformed from")
+msg env (L _ [S _ "init", S _ from, term]) =
+  return (update from (L () (S () "init" : chmsg term)) env)
+msg _ (L p (S _ "init" : _)) =
+  fail (shows p "Malformed init")
+msg env (L _ [S _ "obsv", S _ from, term]) =
+  return (update from (L () (S () "obsv" : chmsg term)) env)
+msg _ (L p (S _ "obsv" : _)) =
+  fail (shows p "Malformed obsv")
+msg env (L _ [S _ "tran", S _ from, term1, term2]) =
+  return (update from (L () (S () "tran" : [strip term1, strip term2])) env)
+msg _ (L p (S _ "tran" : _)) =
+  fail (shows p "Malformed tran")
+msg env (L _ [S _ "to", S _ to, term]) =
+  return (update to (L () (S () "recv" : chmsg term)) env)
+msg _ (L p (S _ "to" : _)) =
+  fail (shows p "Malformed to")
+msg env (L _ [S _ "clone", S p1 from, S p2 to]) =
+  case lookup to env of
+    Just _ -> fail (shows p2 ("Role " ++ to ++ " already defined"))
+    Nothing ->
+      case lookup from env of
+        Nothing -> fail (shows p1 ("Role " ++ from ++ " not defined yet"))
+        Just trace -> return $ (to, trace) : env
+msg _ (L p (S _ "clone" : _)) =
+  fail (shows p "Malformed clone")
+msg env _ = return env
+
+chmsg :: SExpr a -> [SExpr ()]
+chmsg (L _ [S _ "chmsg", S _ chan, term]) =
+  [S () chan, strip term]
+chmsg (L _ [S _ "chmsg", term]) = [strip term]
+chmsg term = [strip term]
+
+
+update :: String -> SExpr () -> Env -> Env
+update role msg [] = [(role, [msg])]
+update role msg ((name, trace) : rest)
+  | role == name = (name, msg : trace) : rest
+  | otherwise = (name, trace) : update role msg rest
+
+assume :: MonadFail m => Env -> SExpr Pos -> m Env
+assume env (L _ (S _ "assume" : S _ role : xs)) =
+  return $ augment role (map strip xs) env
+assume _ (L p (S _ "assume" : _)) =
+  fail (shows p "Malformed assume")
+assume env _ = return env
+
+augment :: String -> [SExpr ()] -> Env -> Env
+augment role assumes [] = [(role, reverse assumes)]
+augment role assumes ((name, a) : rest)
+  | role == name = (name, reverse assumes ++ a) : rest
+  | otherwise = (name, a) : augment role assumes rest
+
+scrub :: SExpr () -> Bool
+scrub (L () (S () "msg" : _)) = False
+scrub (L () (S () "from" : _)) = False
+scrub (L () (S () "to" : _)) = False
+scrub (L () (S () "clone" : _)) = False
+scrub (L () (S () "assume" : _)) = False
+scrub (L () (S () "init" : _)) = False
+scrub (L () (S () "obsv" : _)) = False
+scrub (L () (S () "tran" : _)) = False
+scrub _ = True
diff --git a/src/CPSA/SAS/SAS.hs b/src/CPSA/SAS/SAS.hs
--- a/src/CPSA/SAS/SAS.hs
+++ b/src/CPSA/SAS/SAS.hs
@@ -267,6 +267,7 @@
       leadsto :: [((t, Int), (t, Int))],
       nons :: [t],
       pnons :: [t],
+      ugens :: [t],
       uniqs :: [t],
       origs :: [(t, (t, Int))],
       -- ugen, ugenAt missing!
@@ -286,6 +287,7 @@
       leadsto <- loadOrderings heights (assoc leadstoKey xs)
       nons <- loadBaseTerms kvars (assoc nonOrigKey xs)
       pnons <- loadBaseTerms kvars (assoc pnonOrigKey xs)
+      ugens <- loadBaseTerms kvars (assoc ugenOrigKey xs)
       uniqs <- loadBaseTerms kvars (assoc uniqOrigKey xs)
       origs <- loadOrigs kvars heights (assoc origsKey xs)
       (gen, varmap) <- makeVarmap pos gen [0..(length insts)-1]
@@ -302,6 +304,7 @@
                         leadsto = map f leadsto,
                         nons = nons,
                         pnons = pnons,
+                        ugens = ugens,
                         uniqs = uniqs,
                         origs = map g origs,
                         facts = facts,
@@ -546,6 +549,10 @@
 pnonOrigKey :: String
 pnonOrigKey = "pen-non-orig"
 
+-- The key used in preskeletons for penetrator non-originating atoms
+ugenOrigKey :: String
+ugenOrigKey = "uniq-gen"
+
 -- The key used in preskeletons for uniquely originating atoms
 uniqOrigKey :: String
 uniqOrigKey = "uniq-orig"
@@ -636,6 +643,7 @@
       leadsto = mapPair (instantiate env) (leadsto k),
       nons = map (instantiate env) (nons k),
       pnons = map (instantiate env) (pnons k),
+      ugens = map (instantiate env) (ugens k),
       uniqs = map (instantiate env) (uniqs k),
       origs = mapOrig (instantiate env) (origs k),
       facts = mapFact (instantiate env) (facts k),
@@ -685,6 +693,7 @@
    map (leadsToForm kctx) (leadsto k) ++
    map (unary "non" kctx) (nons k) ++
    map (unary "pnon" kctx) (pnons k) ++
+   map (unary "ugen" kctx) (ugens k) ++
    -- Not possible map (unary "uniq" kctx) (noOrigUniqs k) ++
    map (uniqAtForm kctx) (origs k) ++
    map (factForm kctx) (facts k))
diff --git a/src/ocaml/cpsa.mllib b/src/ocaml/cpsa.mllib
--- a/src/ocaml/cpsa.mllib
+++ b/src/ocaml/cpsa.mllib
@@ -1,5 +1,5 @@
 Sexpr_type
-Reader
+Token
 Scanner
 Sexpr
 Main
diff --git a/src/ocaml/cpsa.mltop b/src/ocaml/cpsa.mltop
--- a/src/ocaml/cpsa.mltop
+++ b/src/ocaml/cpsa.mltop
@@ -1,4 +1,4 @@
 Sexpr_type
-Reader
+Token
 Scanner
 Sexpr
diff --git a/src/ocaml/cpsa.odocl b/src/ocaml/cpsa.odocl
--- a/src/ocaml/cpsa.odocl
+++ b/src/ocaml/cpsa.odocl
@@ -1,3 +1,2 @@
 Sexpr
-Reader
 Main
diff --git a/src/ocaml/expand.ml b/src/ocaml/expand.ml
--- a/src/ocaml/expand.ml
+++ b/src/ocaml/expand.ml
@@ -2,7 +2,6 @@
 
 open Lexing
 open Sexpr
-open Reader
 open Main
 
 (* The macro expand loop limit *)
diff --git a/src/ocaml/main.mli b/src/ocaml/main.mli
--- a/src/ocaml/main.mli
+++ b/src/ocaml/main.mli
@@ -18,7 +18,7 @@
 
 Function [f] is invoked in a context that catches {!exception:Failure}
 exceptions, prints the failure message to standard error, and then
-exits with error code 1.  Function {!val:Reader.failwith_msg} raises
+exits with error code 1.  Function {!val:Sexpr.failwith_msg} raises
 {!exception:Failure} exceptions after adding position information to
 an error message. *)
 val main : (out_channel -> Lexing.position Sexpr.sexpr list -> unit) -> unit
diff --git a/src/ocaml/reader.ml b/src/ocaml/reader.ml
deleted file mode 100644
--- a/src/ocaml/reader.ml
+++ /dev/null
@@ -1,58 +0,0 @@
-open Sexpr_type
-open Lexing
-
-type token =
-  | SYM of string
-  | STR of string
-  | NUM of int
-  | LPAR
-  | RPAR
-  | EOF
-
-let error_msg pos msg =
-  Printf.sprintf "%s:%d:%d: %s\n" pos.pos_fname pos.pos_lnum
-    (pos.pos_cnum - pos.pos_bol + 1) msg
-
-let failwith_msg pos msg =
-  failwith (error_msg pos msg)
-
-let parse_err = failwith_msg
-
-let rec parse_list lexfun lexbuf lpos list =
-  let tok = lexfun lexbuf in
-  let pos = lexeme_start_p lexbuf in
-  match tok with
-  | SYM s -> parse_list lexfun lexbuf lpos (S (pos, s) :: list)
-  | STR s -> parse_list lexfun lexbuf lpos (Q (pos, s) :: list)
-  | NUM n -> parse_list lexfun lexbuf lpos (N (pos, n) :: list)
-  | LPAR ->
-      let x = parse_list lexfun lexbuf pos [] in
-      parse_list lexfun lexbuf lpos (x :: list)
-  | RPAR -> L (lpos, List.rev list)
-  | EOF -> parse_err pos "End of file in list"
-
-let top lexfun lexbuf =
-  let tok = lexfun lexbuf in
-  let pos = lexeme_start_p lexbuf in
-  match tok with
-  | SYM s -> S (pos, s)
-  | STR s -> Q (pos, s)
-  | NUM n -> N (pos, n)
-  | LPAR -> parse_list lexfun lexbuf pos []
-  | RPAR -> parse_err pos "Unmatched right parenthesis"
-  | EOF -> raise End_of_file
-
-let one lexfun lexbuf =
-  let tok = lexfun lexbuf in
-  let pos = lexeme_start_p lexbuf in
-  let x =
-    match tok with
-    | SYM s -> S (pos, s)
-    | STR s -> Q (pos, s)
-    | NUM n -> N (pos, n)
-    | LPAR -> parse_list lexfun lexbuf pos []
-    | RPAR -> parse_err pos "Unmatched right parenthesis"
-    | EOF -> parse_err pos "Nothing in string" in
-  match lexfun lexbuf with
-  | EOF -> x
-  | _ -> parse_err (lexeme_start_p lexbuf) "Trailing garbage in string"
diff --git a/src/ocaml/reader.mli b/src/ocaml/reader.mli
deleted file mode 100644
--- a/src/ocaml/reader.mli
+++ /dev/null
@@ -1,24 +0,0 @@
-(** Operations on positions produced by {!val:Sexpr.read_sexpr} *)
-
-open Sexpr_type
-open Lexing
-
-(**/**)
-
-type token = SYM of string | STR of string | NUM of int | LPAR | RPAR | EOF
-
-(**/**)
-
-(** Add position information to a message. *)
-val error_msg : position -> string -> string
-
-(** Add position information to a message and fail.
-    @raise Failure always *)
-val failwith_msg : position -> string -> 'a
-
-(**/**)
-
-val parse_err : position -> string -> 'a
-
-val top : (lexbuf -> token) -> lexbuf -> position sexpr
-val one : (lexbuf -> token) -> lexbuf -> position sexpr
diff --git a/src/ocaml/scanner.mll b/src/ocaml/scanner.mll
--- a/src/ocaml/scanner.mll
+++ b/src/ocaml/scanner.mll
@@ -1,9 +1,9 @@
 {
-open Reader
 open Lexing
+open Token
 
 let parse_error pos =
-  parse_err pos "Bad token"
+  failwith_msg pos "Bad token"
 }
 let special = ['*' '/' '<' '=' '>' '!' '?' ':' '$' '%' '_' '&' '~' '^']
 let start = ['a' - 'z' 'A' - 'Z'] | special
diff --git a/src/ocaml/sexpr.ml b/src/ocaml/sexpr.ml
--- a/src/ocaml/sexpr.ml
+++ b/src/ocaml/sexpr.ml
@@ -1,6 +1,7 @@
-include Sexpr_type
 open Lexing
 open Format
+open Token
+include Sexpr_type
 
 let annotation = function
   | S (a, _) -> a
@@ -13,12 +14,57 @@
   lexbuf.lex_curr_p <- { lexbuf.lex_curr_p with pos_fname = fname };
   lexbuf
 
+let error_msg = error_msg
+
+let failwith_msg = failwith_msg
+
+let parse_err = failwith_msg
+
+let rec parse_list lexfun lexbuf lpos list =
+  let tok = lexfun lexbuf in
+  let pos = lexeme_start_p lexbuf in
+  match tok with
+  | SYM s -> parse_list lexfun lexbuf lpos (S (pos, s) :: list)
+  | STR s -> parse_list lexfun lexbuf lpos (Q (pos, s) :: list)
+  | NUM n -> parse_list lexfun lexbuf lpos (N (pos, n) :: list)
+  | LPAR ->
+      let x = parse_list lexfun lexbuf pos [] in
+      parse_list lexfun lexbuf lpos (x :: list)
+  | RPAR -> L (lpos, List.rev list)
+  | EOF -> parse_err pos "End of file in list"
+
+let top lexfun lexbuf =
+  let tok = lexfun lexbuf in
+  let pos = lexeme_start_p lexbuf in
+  match tok with
+  | SYM s -> S (pos, s)
+  | STR s -> Q (pos, s)
+  | NUM n -> N (pos, n)
+  | LPAR -> parse_list lexfun lexbuf pos []
+  | RPAR -> parse_err pos "Unmatched right parenthesis"
+  | EOF -> raise End_of_file
+
+let one lexfun lexbuf =
+  let tok = lexfun lexbuf in
+  let pos = lexeme_start_p lexbuf in
+  let x =
+    match tok with
+    | SYM s -> S (pos, s)
+    | STR s -> Q (pos, s)
+    | NUM n -> N (pos, n)
+    | LPAR -> parse_list lexfun lexbuf pos []
+    | RPAR -> parse_err pos "Unmatched right parenthesis"
+    | EOF -> parse_err pos "Nothing in string" in
+  match lexfun lexbuf with
+  | EOF -> x
+  | _ -> parse_err (lexeme_start_p lexbuf) "Trailing garbage in string"
+
 let read_sexpr lexbuf =
-  Reader.top Scanner.token lexbuf
+  top Scanner.token lexbuf
 
 let read_sexpr_from_string ch =
   let lexbuf = Lexing.from_string ch in
-  Reader.one Scanner.token lexbuf
+  one Scanner.token lexbuf
 
 let rec sexpr_printer f x =
   match x with
diff --git a/src/ocaml/sexpr.mli b/src/ocaml/sexpr.mli
--- a/src/ocaml/sexpr.mli
+++ b/src/ocaml/sexpr.mli
@@ -40,8 +40,7 @@
 val read_lexbuf : string -> in_channel -> lexbuf
 
 (** Read an S-expression from a file annotated with the position of
-    the datum in the file.  See module {!module:Reader} for functions
-    that use positions to construct informative error messages.
+    the datum in the file.
 
     @raise End_of_file on end of file
     @raise Failure on malformed input *)
@@ -50,6 +49,13 @@
 (** Read an S-expression from a string annotated with the position of
     the datum in the string. *)
 val read_sexpr_from_string : string -> position sexpr
+
+(** Add position information to a message. *)
+val error_msg : position -> string -> string
+
+(** Add position information to a message and fail.
+    @raise Failure always *)
+val failwith_msg : position -> string -> 'a
 
 (** {1 Output} *)
 
diff --git a/src/ocaml/token.ml b/src/ocaml/token.ml
new file mode 100644
--- /dev/null
+++ b/src/ocaml/token.ml
@@ -0,0 +1,16 @@
+open Lexing
+
+type token =
+  | SYM of string
+  | STR of string
+  | NUM of int
+  | LPAR
+  | RPAR
+  | EOF
+
+let error_msg pos msg =
+  Printf.sprintf "%s:%d:%d: %s\n" pos.pos_fname pos.pos_lnum
+    (pos.pos_cnum - pos.pos_bol + 1) msg
+
+let failwith_msg pos msg =
+  failwith (error_msg pos msg)
diff --git a/src/ocaml/token.mli b/src/ocaml/token.mli
new file mode 100644
--- /dev/null
+++ b/src/ocaml/token.mli
@@ -0,0 +1,16 @@
+(** Operations on positions produced by {!val:Sexpr.read_sexpr} *)
+
+open Lexing
+
+(**/**)
+
+type token = SYM of string | STR of string | NUM of int | LPAR | RPAR | EOF
+
+(**/**)
+
+(** Add position information to a message. *)
+val error_msg : position -> string -> string
+
+(** Add position information to a message and fail.
+    @raise Failure always *)
+val failwith_msg : position -> string -> 'a
diff --git a/tst/Makefile b/tst/Makefile
--- a/tst/Makefile
+++ b/tst/Makefile
@@ -1,53 +1,13 @@
-# When the binary changes, run the test suite, and look for changes in
-# the output.  The changes are not fatal errors, but for a *.scm input
-# file, an error produced by the binary is fatal.
-
-TSTS	:= $(patsubst %.scm,%.txt,$(wildcard *.scm)) \
-		$(patsubst %.lsp,%.txt,$(wildcard *.lsp))
-CPSA	= ../dist/build/cpsa/cpsa$(EXE)
-DIFF	= ../dist/build/cpsadiff/cpsadiff$(EXE)
-SHAPES	= ../dist/build/cpsashapes/cpsashapes$(EXE)
-SAS	= ../dist/build/cpsasas/cpsasas$(EXE)
-ANNOTATIONS = ../dist/build/cpsaannotations/cpsaannotations$(EXE)
-GRAPH	= ../dist/build/cpsagraph/cpsagraph$(EXE)
-CPSAFLAGS = +RTS -M512m -N8 -RTS
-
-# The expected answers are in files with the .tst extension.
-
-# Analyze protocols for shapes expecting success
-%.txt:	%.scm $(CPSA)
-	time $(CPSA) $(CPSAFLAGS) -o $@ $*.scm
-	-$(DIFF) $(DIFFFLAGS) $*.tst $*.txt
-
-# Analyze protocols for shapes expecting failure
-%.txt:	%.lsp $(CPSA)
-	-time $(CPSA) $(CPSAFLAGS) -o $@ $*.lsp
-	-$(DIFF) $(DIFFFLAGS) $*.tst $*.txt
-
-# Extract shapes
-%_shapes.txt:	%.txt
-	$(SHAPES) $(SHAPESFLAGS) -o $@ $<
-
-# Extract shape analysis sentences
-%_sas.text:	%.txt
-	$(SAS) $(SASFLAGS) -o $@ $<
-
-# Annotate shapes
-%_annotations.txt:	%_shapes.txt
-	$(ANNOTATIONS) $(ANNOTATIONSFLAGS) -o $@ $<
-
-# Visualize output
-%.svg:		%.txt
-	$(GRAPH) -c -o $@ $<
+CPSAFLAGS = +RTS -M512m -N -RTS
+CPSATIME = time
 
-# Visualize output using the expanded format
-%.xhtml:	%.txt
-	$(GRAPH) $(GRAPHFLAGS) -o $@ $<
+SRCS := $(wildcard *.scm) $(wildcard *.prot) $(wildcard *.lsp)
 
-.PRECIOUS:	%.txt %_shapes.txt %_annotations.txt
+include ../doc/cpsa.mk
 
-all:	$(patsubst %.txt,%.xhtml,$(TSTS)) \
-		$(patsubst %.txt,%_shapes.xhtml,$(TSTS))
+all:	$(SRCS:%.scm=%_shapes.xhtml) $(SRCS:%.scm=%.xhtml) \
+	$(SRCS:%.prot=%_shapes.xhtml) $(SRCS:%.prot=%.xhtml) \
+	$(SRCS:%.lsp=%_shapes.xhtml) $(SRCS:%.lsp=%.xhtml)
 
 clean:
 	-rm *.txt *.xhtml
diff --git a/tst/aik.tst b/tst/aik.tst
--- a/tst/aik.tst
+++ b/tst/aik.tst
@@ -1,7 +1,7 @@
 (herald "Anonymous identity protocol from TCG")
 
-(comment "CPSA 3.6.5")
-(comment "All input read from aik.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/aik.scm")
 
 (defprotocol aikprot basic
   (defrole ca
diff --git a/tst/attest.tst b/tst/attest.tst
--- a/tst/attest.tst
+++ b/tst/attest.tst
@@ -1,7 +1,7 @@
 (herald attest-door)
 
-(comment "CPSA 3.6.5")
-(comment "All input read from attest.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/attest.scm")
 
 (defprotocol attest-door basic
   (defrole appraise
diff --git a/tst/axiom2.tst b/tst/axiom2.tst
--- a/tst/axiom2.tst
+++ b/tst/axiom2.tst
@@ -1,7 +1,7 @@
 (herald "Axiom 2 Protocol" (bound 20))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from axiom2.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/axiom2.scm")
 (comment "Strand count bounded at 20")
 
 (defprotocol ax2 basic
diff --git a/tst/blanchet.tst b/tst/blanchet.tst
--- a/tst/blanchet.tst
+++ b/tst/blanchet.tst
@@ -1,8 +1,8 @@
 (herald "Blanchet's Simple Example Protocol"
   (comment "There is a flaw in this protocol by design"))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from blanchet.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/blanchet.scm")
 
 (defprotocol blanchet basic
   (defrole init
diff --git a/tst/blanchet_doorsep.prot b/tst/blanchet_doorsep.prot
new file mode 100644
--- /dev/null
+++ b/tst/blanchet_doorsep.prot
@@ -0,0 +1,45 @@
+(defprot blanchet basic
+  (vars (a b akey) (s skey) (d data))
+  (msg init resp (enc (enc s (invk a)) b))
+  (msg resp init (enc d s))
+  (assume init (uniq-orig s))
+  (assume resp (uniq_orig d))
+  (comment "Blanchet's protocol"))
+
+(defskeleton blanchet
+  (vars (a b akey) (s skey) (d data))
+  (defstrand init 2 (a a) (b b) (s s) (d d))
+  (non-orig (invk b))
+  (comment "Analyze from the initiator's perspective"))
+
+(defprot doorsep basic
+  (vars (p d akey) (k skey) (t text))
+  (msg person door (enc (enc k (invk p)) d))
+  (msg door person (enc t k))
+  (msg person door t)
+  (assume person (uniq-orig k))
+  (defrule trust
+    (forall ((z strd) (p d akey) (k skey))
+	    (implies
+	     (and (p "person" z 1)
+		  (p "person" "p" z p)
+		  (p "person" "d" z d)
+		  (p "person" "k" z k)
+		  (fact trust p))
+	     (and (non (invk d))
+		  (uniq k))))))
+
+(defskeleton doorsep
+  (vars (p akey) (t text))
+  (defstrand door 3 (p p) (t t))
+  (non-orig (invk p))
+  (uniq-orig t)
+  (facts (trust p))
+  (comment "Analyze from the door's perspective"))
+
+(defskeleton doorsep
+  (vars (p akey) (t text))
+  (defstrand door 3 (p p) (t t))
+  (non-orig (invk p))
+  (uniq-orig t)
+  (comment "Analyze from the door's perspective when we don't trust p"))
diff --git a/tst/blanchet_doorsep.tst b/tst/blanchet_doorsep.tst
new file mode 100644
--- /dev/null
+++ b/tst/blanchet_doorsep.tst
@@ -0,0 +1,224 @@
+(comment "CPSA 3.6.5")
+(comment "All input read from blanchet_doorsep.scm")
+
+(defprotocol blanchet basic
+  (defrole init
+    (vars (a b akey) (s skey) (d data))
+    (trace (send (enc (enc s (invk a)) b)) (recv (enc d s)))
+    (uniq-orig s))
+  (defrole resp
+    (vars (a b akey) (s skey) (d data))
+    (trace (recv (enc (enc s (invk a)) b)) (send (enc d s)))
+    (uniq_orig d))
+  (comment "Blanchet's protocol"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b akey))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (non-orig (invk b))
+  (uniq-orig s)
+  (comment "Analyze from the initiator's perspective")
+  (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s))))
+  (label 0)
+  (unrealized (0 1))
+  (origs (s (0 0)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b a-0 b-0 akey))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (defstrand resp 2 (d d) (s s) (a a-0) (b b-0))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk b))
+  (uniq-orig s)
+  (operation encryption-test (added-strand resp 2) (enc d s) (0 1))
+  (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
+    ((recv (enc (enc s (invk a-0)) b-0)) (send (enc d s))))
+  (label 1)
+  (parent 0)
+  (unrealized (1 0))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b akey))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (deflistener s)
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk b))
+  (uniq-orig s)
+  (operation encryption-test (added-listener s) (enc d s) (0 1))
+  (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
+    ((recv s) (send s)))
+  (label 2)
+  (parent 0)
+  (unrealized (1 0))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton blanchet
+  (vars (d data) (s skey) (a b akey))
+  (defstrand init 2 (d d) (s s) (a a) (b b))
+  (defstrand resp 2 (d d) (s s) (a a) (b b))
+  (precedes ((0 0) (1 0)) ((1 1) (0 1)))
+  (non-orig (invk b))
+  (uniq-orig s)
+  (operation nonce-test (contracted (a-0 a) (b-0 b)) s (1 0)
+    (enc (enc s (invk a)) b))
+  (traces ((send (enc (enc s (invk a)) b)) (recv (enc d s)))
+    ((recv (enc (enc s (invk a)) b)) (send (enc d s))))
+  (label 3)
+  (parent 1)
+  (unrealized)
+  (shape)
+  (maps ((0) ((a a) (b b) (s s) (d d))))
+  (origs (s (0 0))))
+
+(comment "Nothing left to do")
+
+(defprotocol doorsep basic
+  (defrole person
+    (vars (p d akey) (k skey) (t text))
+    (trace (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    (uniq-orig k))
+  (defrole door
+    (vars (p d akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t)))
+  (defrule trust
+    (forall ((z strd) (p d akey) (k skey))
+      (implies
+        (and (p "person" z 1) (p "person" "p" z p) (p "person" "d" z d)
+          (p "person" "k" z k) (fact trust p))
+        (and (non (invk d)) (uniq k))))))
+
+(defskeleton doorsep
+  (vars (t text) (k skey) (p d akey))
+  (defstrand door 3 (t t) (k k) (p p) (d d))
+  (non-orig (invk p))
+  (uniq-orig t)
+  (facts (trust p))
+  (comment "Analyze from the door's perspective")
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t)))
+  (label 4)
+  (unrealized (0 0))
+  (origs (t (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton doorsep
+  (vars (t text) (k skey) (p d d-0 akey))
+  (defstrand door 3 (t t) (k k) (p p) (d d))
+  (defstrand person 1 (k k) (p p) (d d-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk p) (invk d-0))
+  (uniq-orig t k)
+  (facts (trust p))
+  (rule trust)
+  (operation encryption-test (added-strand person 1) (enc k (invk p))
+    (0 0))
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    ((send (enc (enc k (invk p)) d-0))))
+  (label 5)
+  (parent 4)
+  (unrealized (0 0) (0 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton doorsep
+  (vars (t text) (k skey) (p d akey))
+  (defstrand door 3 (t t) (k k) (p p) (d d))
+  (defstrand person 1 (k k) (p p) (d d))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk p) (invk d))
+  (uniq-orig t k)
+  (facts (trust p))
+  (operation encryption-test (contracted (d-0 d)) (enc k (invk p)) (0 0)
+    (enc (enc k (invk p)) d))
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    ((send (enc (enc k (invk p)) d))))
+  (label 6)
+  (parent 5)
+  (unrealized (0 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton doorsep
+  (vars (t text) (k skey) (p d akey))
+  (defstrand door 3 (t t) (k k) (p p) (d d))
+  (defstrand person 3 (t t) (k k) (p p) (d d))
+  (precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
+  (non-orig (invk p) (invk d))
+  (uniq-orig t k)
+  (facts (trust p))
+  (operation nonce-test (displaced 1 2 person 3) t (0 2) (enc t k))
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    ((send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t)))
+  (label 7)
+  (parent 6)
+  (unrealized)
+  (shape)
+  (maps ((0) ((p p) (t t) (d d) (k k))))
+  (origs (k (1 0)) (t (0 1))))
+
+(defskeleton doorsep
+  (vars (t text) (k skey) (p d akey))
+  (defstrand door 3 (t t) (k k) (p p) (d d))
+  (defstrand person 1 (k k) (p p) (d d))
+  (deflistener k)
+  (precedes ((1 0) (0 0)) ((1 0) (2 0)) ((2 1) (0 2)))
+  (non-orig (invk p) (invk d))
+  (uniq-orig t k)
+  (facts (trust p))
+  (operation nonce-test (added-listener k) t (0 2) (enc t k))
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    ((send (enc (enc k (invk p)) d))) ((recv k) (send k)))
+  (label 8)
+  (parent 6)
+  (unrealized (2 0))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol doorsep basic
+  (defrole person
+    (vars (p d akey) (k skey) (t text))
+    (trace (send (enc (enc k (invk p)) d)) (recv (enc t k)) (send t))
+    (uniq-orig k))
+  (defrole door
+    (vars (p d akey) (k skey) (t text))
+    (trace (recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t)))
+  (defrule trust
+    (forall ((z strd) (p d akey) (k skey))
+      (implies
+        (and (p "person" z 1) (p "person" "p" z p) (p "person" "d" z d)
+          (p "person" "k" z k) (fact trust p))
+        (and (non (invk d)) (uniq k))))))
+
+(defskeleton doorsep
+  (vars (t text) (k skey) (p d akey))
+  (defstrand door 3 (t t) (k k) (p p) (d d))
+  (non-orig (invk p))
+  (uniq-orig t)
+  (comment "Analyze from the door's perspective when we don't trust p")
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t)))
+  (label 9)
+  (unrealized (0 0))
+  (origs (t (0 1)))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton doorsep
+  (vars (t text) (k skey) (p d d-0 akey))
+  (defstrand door 3 (t t) (k k) (p p) (d d))
+  (defstrand person 1 (k k) (p p) (d d-0))
+  (precedes ((1 0) (0 0)))
+  (non-orig (invk p))
+  (uniq-orig t k)
+  (operation encryption-test (added-strand person 1) (enc k (invk p))
+    (0 0))
+  (traces ((recv (enc (enc k (invk p)) d)) (send (enc t k)) (recv t))
+    ((send (enc (enc k (invk p)) d-0))))
+  (label 10)
+  (parent 9)
+  (unrealized)
+  (shape)
+  (maps ((0) ((p p) (t t) (d d) (k k))))
+  (origs (k (1 0)) (t (0 1))))
+
+(comment "Nothing left to do")
diff --git a/tst/bltk_test.tst b/tst/bltk_test.tst
--- a/tst/bltk_test.tst
+++ b/tst/bltk_test.tst
@@ -1,7 +1,7 @@
 (herald "bltk Test File" (algebra diffie-hellman) (bound 12))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from bltk_test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/bltk_test.scm")
 
 (defprotocol test diffie-hellman
   (defrole r
diff --git a/tst/comp_test.tst b/tst/comp_test.tst
--- a/tst/comp_test.tst
+++ b/tst/comp_test.tst
@@ -1,7 +1,7 @@
 (herald "Main Example")
 
-(comment "CPSA 3.6.5")
-(comment "All input read from comp_test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/comp_test.scm")
 
 (defprotocol main-ex-src basic
   (defrole qn
diff --git a/tst/dh-ca.tst b/tst/dh-ca.tst
--- a/tst/dh-ca.tst
+++ b/tst/dh-ca.tst
@@ -1,7 +1,7 @@
 (herald dhca (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from dh-ca.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/dh-ca.scm")
 
 (defprotocol dhca diffie-hellman
   (defrole init
diff --git a/tst/dh_mim.tst b/tst/dh_mim.tst
--- a/tst/dh_mim.tst
+++ b/tst/dh_mim.tst
@@ -1,8 +1,8 @@
 (herald "Diffie-Hellman protocol, man-in-the-middle attack"
   (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from dh_mim.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/dh_mim.scm")
 
 (defprotocol dh_mim diffie-hellman
   (defrole init
diff --git a/tst/dh_mim2.tst b/tst/dh_mim2.tst
--- a/tst/dh_mim2.tst
+++ b/tst/dh_mim2.tst
@@ -1,8 +1,8 @@
 (herald "Diffie-Hellman protocol, man-in-the-middle attack"
   (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from dh_mim2.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/dh_mim2.scm")
 
 (defprotocol dh_mim diffie-hellman
   (defrole init
diff --git a/tst/dh_sig.tst b/tst/dh_sig.tst
--- a/tst/dh_sig.tst
+++ b/tst/dh_sig.tst
@@ -1,7 +1,7 @@
 (herald "Signed DH exchange" (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from dh_sig.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/dh_sig.scm")
 
 (defprotocol dh_sig diffie-hellman
   (defrole init
diff --git a/tst/dh_test.tst b/tst/dh_test.tst
--- a/tst/dh_test.tst
+++ b/tst/dh_test.tst
@@ -1,8 +1,8 @@
 (herald "Diffie-Hellman protocol, man-in-the-middle attack"
   (algebra diffie-hellman) (bound 20))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from dh_test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/dh_test.scm")
 (comment "Strand count bounded at 20")
 
 (defprotocol foo3 diffie-hellman
diff --git a/tst/dhnsl_basic.tst b/tst/dhnsl_basic.tst
--- a/tst/dhnsl_basic.tst
+++ b/tst/dhnsl_basic.tst
@@ -1,8 +1,8 @@
 (herald "Diffie-Hellman enhanced Needham-Schroeder-Lowe Protocol"
   (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from dhnsl_basic.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/dhnsl_basic.scm")
 
 (defprotocol dhnsl diffie-hellman
   (defrole resp
diff --git a/tst/dhnsl_use.tst b/tst/dhnsl_use.tst
--- a/tst/dhnsl_use.tst
+++ b/tst/dhnsl_use.tst
@@ -1,8 +1,8 @@
 (herald "Diffie-Hellman enhanced Needham-Schroeder-Lowe Protocol"
   (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from dhnsl_use.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/dhnsl_use.scm")
 
 (defprotocol dhnsl diffie-hellman
   (defrole resp
diff --git a/tst/enrich.tst b/tst/enrich.tst
--- a/tst/enrich.tst
+++ b/tst/enrich.tst
@@ -1,7 +1,7 @@
 (herald enrich)
 
-(comment "CPSA 3.6.5")
-(comment "All input read from enrich.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/enrich.scm")
 
 (defprotocol enrich basic
   (defrole extend
diff --git a/tst/envelope.scm b/tst/envelope.scm
--- a/tst/envelope.scm
+++ b/tst/envelope.scm
@@ -61,7 +61,8 @@
 				tne tno "false")))
      (tran state (extend value state)))
     (uniq-orig tne)
-    (non-orig (invk tpmkey)))
+    ;; (non-orig (invk tpmkey))  ; JDG:  This assumption irrelevant 
+    )
 
   ;; This role creates a key whose use is restricted to a requested
   ;; pcr value (since we only model one pcr).  It doesn't create or
@@ -113,10 +114,16 @@
      (send (enc v k)))
     (uniq-orig n v tno esk)
     (neq (tno n))
-    (non-orig aik esk1 (invk tpmkey))))
+    (non-orig aik esk1 (invk tpmkey)	; JDG:  This assumption important 
+	      )))
 
 ;;; Initial skeleton
 (defskeleton envelope
+  (vars (v n data) (esk skey) (k aik tpmkey akey) (pcr mesg))
+  (deflistener esk)
+  (defstrand alice 7 (esk esk) (n n) (pcr pcr) (v v) (k k) (aik aik)))
+
+(defskeleton envelope
   (vars (v n data) (k aik akey) (pcr mesg))
   (deflistener (refuse n pcr v k aik))
   (deflistener v)
@@ -126,3 +133,9 @@
   (vars (v data))
   (deflistener v)
   (defstrand alice 7 (v v)))
+
+(defskeleton envelope
+  (vars (v n data) (k aik akey) (pcr mesg))
+  (deflistener (refuse n pcr v k aik))
+  ;;   (deflistener v)
+  (defstrand alice 7 (n n) (pcr pcr) (v v) (k k) (aik aik)))
diff --git a/tst/envelope.tst b/tst/envelope.tst
--- a/tst/envelope.tst
+++ b/tst/envelope.tst
@@ -1,7792 +1,10570 @@
 (herald "Envelope Protocol" (bound 20))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from envelope.scm")
-(comment "Strand count bounded at 20")
-
-(defprotocol envelope basic
-  (defrole tpm-power-on (vars) (trace (init "0")))
-  (defrole tpm-quote
-    (vars (nonce pcr mesg) (aik akey))
-    (trace (recv (cat "quote" nonce)) (obsv pcr)
-      (send (enc "quote" pcr nonce aik)))
-    (non-orig aik))
-  (defrole tpm-extend-enc
-    (vars (value state mesg) (esk skey) (tne tno data) (tpmkey akey))
-    (trace (recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc value esk)) tno
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc value esk)))
-            tne tno "false"))) (tran state (hash value state)))
-    (non-orig (invk tpmkey))
-    (uniq-orig tne))
-  (defrole tpm-create-key
-    (vars (k aik akey) (pcr mesg) (esk skey))
-    (trace (recv (enc "create key" pcr esk))
-      (send (enc "created" k pcr aik)))
-    (non-orig (invk k) aik esk)
-    (uniq-orig k))
-  (defrole tpm-decrypt
-    (vars (m pcr mesg) (k aik akey))
-    (trace (recv (cat "decrypt" (enc m k)))
-      (recv (enc "created" k pcr aik)) (obsv pcr) (send m))
-    (non-orig aik))
-  (defrole alice
-    (vars (v n tne tno data) (esk1 esk skey) (k aik tpmkey akey)
-      (pcr mesg))
-    (trace (send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    (non-orig aik esk1 (invk tpmkey))
-    (uniq-orig v n tno esk)
-    (neq (tno n))))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (neq (tno n))
-  (non-orig esk1 aik (invk tpmkey))
-  (uniq-orig v n tno esk)
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k))))
-  (label 0)
-  (unrealized (0 0) (1 0) (2 5))
-  (preskeleton)
-  (origs (esk (2 0)) (n (2 2)) (tno (2 2)) (v (2 6)))
-  (comment "Not a skeleton"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (precedes ((2 6) (0 0)) ((2 6) (1 0)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk tpmkey))
-  (uniq-orig v n tno esk)
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k))))
-  (label 1)
-  (parent 0)
-  (unrealized (0 0) (2 5))
-  (origs (esk (2 0)) (n (2 2)) (tno (2 2)) (v (2 6)))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey aik-0 akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" k (hash "obtain" (hash n pcr)) aik))
-    (aik aik-0))
-  (precedes ((2 6) (0 0)) ((2 6) (1 0)) ((3 2) (2 5)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk tpmkey))
-  (uniq-orig v n tno esk)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" k (hash "obtain" (hash n pcr)) aik) (2 5))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (cat "quote" nonce))
-      (obsv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send
-        (enc "quote" (enc "created" k (hash "obtain" (hash n pcr)) aik)
-          nonce aik-0))))
-  (label 2)
-  (parent 1)
-  (unrealized (0 0) (3 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk esk-0 skey)
-    (k aik tpmkey akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk-0) (k k) (aik aik))
-  (precedes ((2 6) (0 0)) ((2 6) (1 0)) ((3 1) (2 5)))
-  (neq (tno n))
-  (non-orig esk1 esk-0 aik (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (added-strand tpm-create-key 2)
-    (enc "created" k (hash "obtain" (hash n pcr)) aik) (2 5))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
-  (label 3)
-  (parent 1)
-  (unrealized (0 0) (1 0) (3 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk esk-0 skey)
-    (k aik tpmkey aik-0 akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk-0) (k k) (aik aik))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
-    (aik aik-0))
-  (precedes ((2 6) (0 0)) ((2 6) (1 0)) ((3 1) (2 5)) ((4 2) (3 0)))
-  (neq (tno n))
-  (non-orig esk1 esk-0 aik aik-0 (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (3 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "quote" nonce))
-      (obsv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
-      (send
-        (enc "quote"
-          (enc "create key" (hash "obtain" (hash n pcr)) esk-0) nonce
-          aik-0))))
-  (label 4)
-  (parent 3)
-  (unrealized (0 0) (1 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (1 0)) ((3 1) (2 5)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (displaced 4 2 alice 5)
-    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (3 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
-  (label 5)
-  (parent 3)
-  (unrealized (0 0) (1 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey aik-0 akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr v) (aik aik-0))
-  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 1)) ((3 1) (2 5))
-    ((4 2) (1 0)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation nonce-test (added-strand tpm-quote 3) v (1 0) (enc v k))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "quote" nonce)) (obsv v)
-      (send (enc "quote" v nonce aik-0))))
-  (label 6)
-  (parent 5)
-  (unrealized (0 0) (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (pcr pcr-0 mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey aik-0 akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr pcr-0) (k k) (aik aik-0))
-  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5))
-    ((4 3) (1 0)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k pcr-0 aik-0)) (obsv pcr-0) (send v)))
-  (label 7)
-  (parent 5)
-  (unrealized (0 0) (4 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr pcr-0 nonce mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey aik-0 aik-1 akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr pcr-0) (k k) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" k pcr-0 aik-0)) (aik aik-1))
-  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5))
-    ((3 1) (5 1)) ((4 3) (1 0)) ((5 2) (4 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" k pcr-0 aik-0) (4 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k pcr-0 aik-0)) (obsv pcr-0) (send v))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" k pcr-0 aik-0))
-      (send (enc "quote" (enc "created" k pcr-0 aik-0) nonce aik-1))))
-  (label 8)
-  (parent 7)
-  (unrealized (0 0) (5 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n pcr)))
-    (k k) (aik aik))
-  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5))
-    ((4 3) (1 0)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (displaced 5 3 tpm-create-key 2)
-    (enc "created" k pcr-0 aik-0) (4 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (obsv (hash "obtain" (hash n pcr))) (send v)))
-  (label 9)
-  (parent 7)
-  (unrealized (0 0) (4 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno tne-0 tno-0 data) (esk1 esk esk-0 skey)
-    (k aik tpmkey tpmkey-0 akey))
-  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n pcr)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n pcr))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5))
-    ((4 3) (1 0)) ((5 3) (4 2)))
-  (leadsto ((5 3) (4 2)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0))
-  (uniq-orig v n tno tne-0 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "obtain" (hash n pcr)) (4 2))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (obsv (hash "obtain" (hash n pcr))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n pcr) (hash "obtain" (hash n pcr)))))
-  (label 10)
-  (parent 9)
-  (unrealized (0 0) (5 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 3) (5 3)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash n state) (5 3))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state))))
-  (label 11)
-  (parent 10)
-  (unrealized (0 0) (6 2))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr
-      (hash esk-1
-        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-        tno-1 "false")) (aik aik-0))
-  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 3) (5 3))
-    ((7 2) (6 2)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false") (6 2))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce))
-      (obsv
-        (hash esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false"))
-      (send
-        (enc "quote"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false") nonce aik-0))))
-  (label 12)
-  (parent 11)
-  (unrealized (0 0) (6 2) (7 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey-1))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (2 1)) ((6 3) (5 3)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation encryption-test (displaced 7 2 alice 3)
-    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false") (6 2))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state))))
-  (label 13)
-  (parent 11)
-  (unrealized (0 0) (6 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test
-    (added-listener
-      (cat esk-1
-        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-        tno-1 "false"))
-    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false") (6 2))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false"))))
-  (label 14)
-  (parent 11)
-  (unrealized (0 0) (6 2) (7 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr
-      (hash esk-1
-        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-        tno-1 "false")) (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value esk-1)
-    (state
-      (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
-        tne-1 tno-1 "false")) (tne tne-2) (tno tno-2) (esk esk-2)
-    (tpmkey tpmkey-2))
-  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (8 3))
-    ((6 3) (5 3)) ((7 2) (6 2)) ((8 3) (7 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false") (7 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce))
-      (obsv
-        (hash esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false"))
-      (send
-        (enc "quote"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false") nonce aik-0)))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc esk-1 esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc esk-1 esk-2)))
-            tne-2 tno-2 "false")))
-      (tran
-        (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
-          tne-1 tno-1 "false")
-        (hash esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false"))))
-  (label 15)
-  (parent 12)
-  (unrealized (0 0) (6 2) (8 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (2 1)) ((6 3) (5 3)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation nonce-test (contracted (tpmkey-1 tpmkey)) esk (6 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state))))
-  (label 16)
-  (parent 13)
-  (unrealized (0 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey-1))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
-  (precedes ((2 0) (7 1)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (6 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) esk (6 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce)) (obsv esk)
-      (send (enc "quote" esk nonce aik-0))))
-  (label 17)
-  (parent 13)
-  (unrealized (0 0) (7 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey-1))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (precedes ((2 0) (7 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (2 1)) ((6 3) (5 3)) ((7 3) (6 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) esk (6 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
-  (label 18)
-  (parent 13)
-  (unrealized (0 0) (7 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
-    (aik aik-0))
-  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)) ((8 2) (7 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash "execute transport" (hash "extend" (enc n esk-1))) (7 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
-          aik-0))))
-  (label 19)
-  (parent 14)
-  (unrealized (0 0) (6 2) (8 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test
-    (added-listener
-      (cat "execute transport" (hash "extend" (enc n esk-1))))
-    (hash "execute transport" (hash "extend" (enc n esk-1))) (7 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1))))))
-  (label 20)
-  (parent 14)
-  (unrealized (0 0) (6 2) (8 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (4 0))
-    ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik) (0 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send
-        (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))))
-  (label 21)
-  (parent 16)
-  (unrealized (7 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-    (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (4 0))
-    ((2 6) (7 1)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik) (0 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce))
-      (obsv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send
-        (enc "quote"
-          (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)
-          nonce aik-0))))
-  (label 22)
-  (parent 16)
-  (unrealized (7 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr nonce mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey-1))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
-  (precedes ((2 0) (7 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (2 1)) ((6 3) (5 3)) ((7 3) (6 0)) ((8 2) (7 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" tpmkey pcr aik-0) (7 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
-      (send
-        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
-  (label 23)
-  (parent 18)
-  (unrealized (0 0) (8 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
-    (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "execute transport")
-    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
-    (esk esk-2) (tpmkey tpmkey-2))
-  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)) ((8 2) (7 0)) ((9 3) (8 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((9 3) (8 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "execute transport" (hash "extend" (enc n esk-1))) (8 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
-          aik-0)))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport"
-          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
-          (hash esk-2
-            (hash "execute transport"
-              (hash "extend" (enc "execute transport" esk-2))) tne-2
-            tno-2 "false")))
-      (tran (hash "extend" (enc n esk-1))
-        (hash "execute transport" (hash "extend" (enc n esk-1))))))
-  (label 24)
-  (parent 19)
-  (unrealized (0 0) (6 2) (9 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
-  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)) ((9 2) (8 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash "extend" (enc n esk-1)) (8 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
-      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0))))
-  (label 25)
-  (parent 20)
-  (unrealized (0 0) (6 2) (9 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (precedes ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)) ((9 1) (8 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test
-    (added-listener (cat "extend" (enc n esk-1)))
-    (hash "extend" (enc n esk-1)) (8 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))))
-  (label 26)
-  (parent 20)
-  (unrealized (0 0) (9 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (4 0))
-    ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0)) ((8 3) (7 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 tne-1 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "refuse" (hash n state)) (7 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state)))))
-  (label 27)
-  (parent 21)
-  (unrealized (8 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
-    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 tpmkey-3 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
-    (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "execute transport")
-    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
-    (esk esk-2) (tpmkey tpmkey-2))
-  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
-    (tne tne-3) (tno tno-3) (esk esk-3) (tpmkey tpmkey-3))
-  (precedes ((2 2) (10 3)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)) ((8 2) (7 0)) ((9 3) (8 1))
-    ((10 3) (9 3)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((9 3) (8 1)) ((10 3) (9 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2) (invk tpmkey-3))
-  (uniq-orig v n tno tne-0 tne-1 tne-2 tne-3 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "extend" (enc n esk-1)) (9 3))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
-          aik-0)))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport"
-          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
-          (hash esk-2
-            (hash "execute transport"
-              (hash "extend" (enc "execute transport" esk-2))) tne-2
-            tno-2 "false")))
-      (tran (hash "extend" (enc n esk-1))
-        (hash "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
-      (send (cat "establish transport" tne-3))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "extend" esk-3))
-          tno-3 "false"
-          (hash esk-3
-            (hash "execute transport"
-              (hash "extend" (enc "extend" esk-3))) tne-3 tno-3
-            "false")))
-      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
-  (label 28)
-  (parent 24)
-  (unrealized (0 0) (6 2) (10 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
-    (tne tne-2) (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (precedes ((2 2) (10 3)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)) ((9 2) (8 0))
-    ((10 3) (9 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((10 3) (9 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "extend" (enc n esk-1)) (9 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
-      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0)))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "extend" esk-2))
-          tno-2 "false"
-          (hash esk-2
-            (hash "execute transport"
-              (hash "extend" (enc "extend" esk-2))) tne-2 tno-2
-            "false")))
-      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
-  (label 29)
-  (parent 25)
-  (unrealized (0 0) (6 2) (10 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (precedes ((2 0) (6 0)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
-    ((9 1) (8 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (contracted (esk-1 esk)) n (9 0) (enc n esk))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
-            tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-1 tno-1 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-1 tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk)))))
-  (label 30)
-  (parent 26)
-  (unrealized (0 0) (6 0) (7 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr n) (aik aik-0))
-  (precedes ((2 2) (10 1)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
-    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)) ((9 1) (8 0))
-    ((10 2) (9 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) n (9 0) (enc n esk))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1))))
-    ((recv (cat "quote" nonce)) (obsv n)
-      (send (enc "quote" n nonce aik-0))))
-  (label 31)
-  (parent 26)
-  (unrealized (0 0) (10 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (deflistener esk)
-  (precedes ((2 0) (10 0)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
-    ((9 1) (8 0)) ((10 1) (9 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-listener esk) n (9 0) (enc n esk))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk)))
-  (label 32)
-  (parent 26)
-  (unrealized (0 0) (10 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 3) (8 3)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash n state) (8 3))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state))))
-  (label 33)
-  (parent 27)
-  (unrealized (9 2))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 0) (10 1)) ((2 2) (9 0)) ((2 4) (3 0))
-    ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2))
-    ((8 1) (7 0)) ((9 1) (8 0)) ((10 2) (7 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) esk (7 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
-            tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-1 tno-1 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-1 tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "quote" nonce)) (obsv esk)
-      (send (enc "quote" esk nonce aik-0))))
-  (label 34)
-  (parent 30)
-  (unrealized (0 0) (6 0) (10 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 2) (9 0)) ((2 4) (3 0))
-    ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2))
-    ((8 1) (7 0)) ((9 1) (8 0)) ((10 3) (7 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) esk (7 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
-            tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-1 tno-1 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-1 tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
-  (label 35)
-  (parent 30)
-  (unrealized (0 0) (6 0) (10 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (deflistener esk)
-  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
-  (precedes ((2 0) (11 1)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
-    ((9 1) (8 0)) ((10 1) (9 0)) ((11 2) (10 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) esk (10 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
-    ((recv (cat "quote" nonce)) (obsv esk)
-      (send (enc "quote" esk nonce aik-0))))
-  (label 36)
-  (parent 32)
-  (unrealized (0 0) (11 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (deflistener esk)
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (precedes ((2 0) (11 0)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
-    ((9 1) (8 0)) ((10 1) (9 0)) ((11 3) (10 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) esk (10 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
-  (label 37)
-  (parent 32)
-  (unrealized (0 0) (11 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr
-      (hash esk-2
-        (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-        tno-2 "false")) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 3) (8 3)) ((10 2) (9 2)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false") (9 2))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce))
-      (obsv
-        (hash esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false"))
-      (send
-        (enc "quote"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false") nonce aik-0))))
-  (label 38)
-  (parent 33)
-  (unrealized (9 2) (10 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation encryption-test
-    (added-listener
-      (cat esk-2
-        (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-        tno-2 "false"))
-    (hash esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false") (9 2))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false"))))
-  (label 39)
-  (parent 33)
-  (unrealized (9 2) (10 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state pcr nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 data) (esk1 esk esk-0 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
-  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 2) (9 0)) ((2 4) (3 0))
-    ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2))
-    ((8 1) (7 0)) ((9 1) (8 0)) ((10 3) (7 0)) ((11 2) (10 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" tpmkey pcr aik-0) (10 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
-            tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-1 tno-1 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-1 tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
-      (send
-        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
-  (label 40)
-  (parent 35)
-  (unrealized (0 0) (6 0) (11 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (deflistener esk)
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
-  (precedes ((2 0) (11 0)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
-    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
-    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
-    ((9 1) (8 0)) ((10 1) (9 0)) ((11 3) (10 0)) ((12 2) (11 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" tpmkey pcr aik-0) (11 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
-      (send
-        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
-  (label 41)
-  (parent 37)
-  (unrealized (0 0) (12 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
-    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 tpmkey-3 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr
-      (hash esk-2
-        (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-        tno-2 "false")) (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value esk-2)
-    (state
-      (cat (hash "execute transport" (hash "extend" (enc n esk-2)))
-        tne-2 tno-2 "false")) (tne tne-3) (tno tno-3) (esk esk-3)
-    (tpmkey tpmkey-3))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (11 3)) ((9 3) (8 3)) ((10 2) (9 2))
-    ((11 3) (10 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3))
-    ((11 3) (10 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2) (invk tpmkey-3))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 tne-3 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false") (10 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce))
-      (obsv
-        (hash esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false"))
-      (send
-        (enc "quote"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false") nonce aik-0)))
-    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
-      (send (cat "establish transport" tne-3))
-      (recv
-        (cat "execute transport" (cat "extend" (enc esk-2 esk-3)) tno-3
-          "false"
-          (hash esk-3
-            (hash "execute transport" (hash "extend" (enc esk-2 esk-3)))
-            tne-3 tno-3 "false")))
-      (tran
-        (cat (hash "execute transport" (hash "extend" (enc n esk-2)))
-          tne-2 tno-2 "false")
-        (hash esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false"))))
-  (label 42)
-  (parent 38)
-  (unrealized (9 2) (11 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-2))))
-    (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
-    ((11 2) (10 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash "execute transport" (hash "extend" (enc n esk-2))) (10 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-2))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-2))) nonce
-          aik-0))))
-  (label 43)
-  (parent 39)
-  (unrealized (9 2) (11 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
-    ((11 1) (10 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation encryption-test
-    (added-listener
-      (cat "execute transport" (hash "extend" (enc n esk-2))))
-    (hash "execute transport" (hash "extend" (enc n esk-2))) (10 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2))))))
-  (label 44)
-  (parent 39)
-  (unrealized (9 2) (11 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
-    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 tpmkey-3 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-2))))
-    (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "execute transport")
-    (state (hash "extend" (enc n esk-2))) (tne tne-3) (tno tno-3)
-    (esk esk-3) (tpmkey tpmkey-3))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
-    ((11 2) (10 0)) ((12 3) (11 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3))
-    ((12 3) (11 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2) (invk tpmkey-3))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 tne-3 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "execute transport" (hash "extend" (enc n esk-2))) (11 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-2))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-2))) nonce
-          aik-0)))
-    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
-      (send (cat "establish transport" tne-3))
-      (recv
-        (cat "execute transport"
-          (cat "extend" (enc "execute transport" esk-3)) tno-3 "false"
-          (hash esk-3
-            (hash "execute transport"
-              (hash "extend" (enc "execute transport" esk-3))) tne-3
-            tno-3 "false")))
-      (tran (hash "extend" (enc n esk-2))
-        (hash "execute transport" (hash "extend" (enc n esk-2))))))
-  (label 45)
-  (parent 43)
-  (unrealized (9 2) (12 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "extend" (enc n esk-2))) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
-    ((11 1) (10 0)) ((12 2) (11 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash "extend" (enc n esk-2)) (11 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-2)))
-      (send (enc "quote" (hash "extend" (enc n esk-2)) nonce aik-0))))
-  (label 46)
-  (parent 44)
-  (unrealized (9 2) (12 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (deflistener (cat "extend" (enc n esk-2)))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (12 0)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
-    ((11 1) (10 0)) ((12 1) (11 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation encryption-test
-    (added-listener (cat "extend" (enc n esk-2)))
-    (hash "extend" (enc n esk-2)) (11 0))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "extend" (enc n esk-2)))
-      (send (cat "extend" (enc n esk-2)))))
-  (label 47)
-  (parent 44)
-  (unrealized (12 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 tne-4
-      tno-4 data) (esk1 esk esk-0 esk-1 esk-2 esk-3 esk-4 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 tpmkey-3 tpmkey-4
-      akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-2))))
-    (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "execute transport")
-    (state (hash "extend" (enc n esk-2))) (tne tne-3) (tno tno-3)
-    (esk esk-3) (tpmkey tpmkey-3))
-  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-2))
-    (tne tne-4) (tno tno-4) (esk esk-4) (tpmkey tpmkey-4))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (13 3)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
-    ((11 2) (10 0)) ((12 3) (11 1)) ((13 3) (12 3)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3))
-    ((12 3) (11 1)) ((13 3) (12 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2) (invk tpmkey-3) (invk tpmkey-4))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 tne-3 tne-4 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "extend" (enc n esk-2)) (12 3))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-2))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-2))) nonce
-          aik-0)))
-    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
-      (send (cat "establish transport" tne-3))
-      (recv
-        (cat "execute transport"
-          (cat "extend" (enc "execute transport" esk-3)) tno-3 "false"
-          (hash esk-3
-            (hash "execute transport"
-              (hash "extend" (enc "execute transport" esk-3))) tne-3
-            tno-3 "false")))
-      (tran (hash "extend" (enc n esk-2))
-        (hash "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "establish transport" tpmkey-4 (enc esk-4 tpmkey-4)))
-      (send (cat "establish transport" tne-4))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "extend" esk-4))
-          tno-4 "false"
-          (hash esk-4
-            (hash "execute transport"
-              (hash "extend" (enc "extend" esk-4))) tne-4 tno-4
-            "false")))
-      (tran (enc n esk-2) (hash "extend" (enc n esk-2)))))
-  (label 48)
-  (parent 45)
-  (unrealized (9 2) (13 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
-    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 tpmkey-3 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "extend" (enc n esk-2))) (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-2))
-    (tne tne-3) (tno tno-3) (esk esk-3) (tpmkey tpmkey-3))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (13 3)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
-    ((11 1) (10 0)) ((12 2) (11 0)) ((13 3) (12 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3))
-    ((13 3) (12 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2) (invk tpmkey-3))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 tne-3 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "extend" (enc n esk-2)) (12 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-2)))
-      (send (enc "quote" (hash "extend" (enc n esk-2)) nonce aik-0)))
-    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
-      (send (cat "establish transport" tne-3))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "extend" esk-3))
-          tno-3 "false"
-          (hash esk-3
-            (hash "execute transport"
-              (hash "extend" (enc "extend" esk-3))) tne-3 tno-3
-            "false")))
-      (tran (enc n esk-2) (hash "extend" (enc n esk-2)))))
-  (label 49)
-  (parent 46)
-  (unrealized (9 2) (13 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 2) (6 2)) ((2 2) (12 0))
-    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
-    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
-    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
-    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation nonce-test (contracted (esk-2 esk)) n (12 0) (enc n esk))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-2
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-2
-            tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-2 tno-2 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-2 tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk)))))
-  (label 50)
-  (parent 47)
-  (unrealized (9 0) (10 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (deflistener (cat "extend" (enc n esk-2)))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr n) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (13 1)) ((2 4) (3 0))
-    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
-    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
-    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
-    ((11 1) (10 0)) ((12 1) (11 0)) ((13 2) (12 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) n (12 0) (enc n esk))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "extend" (enc n esk-2)))
-      (send (cat "extend" (enc n esk-2))))
-    ((recv (cat "quote" nonce)) (obsv n)
-      (send (enc "quote" n nonce aik-0))))
-  (label 51)
-  (parent 47)
-  (unrealized (13 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (deflistener (cat "extend" (enc n esk-2)))
-  (deflistener esk)
-  (precedes ((2 0) (6 0)) ((2 0) (13 0)) ((2 2) (6 2)) ((2 2) (12 0))
-    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
-    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
-    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
-    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (12 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation nonce-test (added-listener esk) n (12 0) (enc n esk))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "extend" (enc n esk-2)))
-      (send (cat "extend" (enc n esk-2)))) ((recv esk) (send esk)))
-  (label 52)
-  (parent 47)
-  (unrealized (13 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 0) (13 1)) ((2 2) (6 2))
-    ((2 2) (12 0)) ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1))
-    ((6 3) (5 3)) ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0))
-    ((9 3) (8 3)) ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0))
-    ((13 2) (10 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) esk (10 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-2
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-2
-            tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-2 tno-2 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-2 tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "quote" nonce)) (obsv esk)
-      (send (enc "quote" esk nonce aik-0))))
-  (label 53)
-  (parent 50)
-  (unrealized (9 0) (13 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 0) (13 0)) ((2 2) (6 2))
-    ((2 2) (12 0)) ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1))
-    ((6 3) (5 3)) ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0))
-    ((9 3) (8 3)) ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0))
-    ((13 3) (10 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) esk (10 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-2
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-2
-            tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-2 tno-2 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-2 tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
-  (label 54)
-  (parent 50)
-  (unrealized (9 0) (13 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (deflistener (cat "extend" (enc n esk-2)))
-  (deflistener esk)
-  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 0) (14 1)) ((2 2) (6 2)) ((2 2) (12 0))
-    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
-    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
-    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
-    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (12 0))
-    ((14 2) (13 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) esk (13 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "extend" (enc n esk-2)))
-      (send (cat "extend" (enc n esk-2)))) ((recv esk) (send esk))
-    ((recv (cat "quote" nonce)) (obsv esk)
-      (send (enc "quote" esk nonce aik-0))))
-  (label 55)
-  (parent 52)
-  (unrealized (14 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (deflistener (cat "extend" (enc n esk-2)))
-  (deflistener esk)
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (precedes ((2 0) (6 0)) ((2 0) (14 0)) ((2 2) (6 2)) ((2 2) (12 0))
-    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
-    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
-    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
-    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (12 0))
-    ((14 3) (13 0)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) esk (13 0)
-    (enc esk tpmkey))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "extend" (enc n esk-2)))
-      (send (cat "extend" (enc n esk-2)))) ((recv esk) (send esk))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
-  (label 56)
-  (parent 52)
-  (unrealized (14 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state pcr nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 aik-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
-  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 0) (13 0)) ((2 2) (6 2))
-    ((2 2) (12 0)) ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0))
-    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1))
-    ((6 3) (5 3)) ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0))
-    ((9 3) (8 3)) ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0))
-    ((13 3) (10 0)) ((14 2) (13 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" tpmkey pcr aik-0) (13 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-2
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-2
-            tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-2 tno-2 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-2 tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
-      (send
-        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
-  (label 57)
-  (parent 54)
-  (unrealized (9 0) (14 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 aik-1 akey))
-  (deflistener
-    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce (enc v k))
-    (pcr (hash "refuse" (hash n state))) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
-    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
-    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (deflistener
-    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
-      tne-2 tno-2 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
-  (deflistener (cat "extend" (enc n esk-2)))
-  (deflistener esk)
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
-  (precedes ((2 0) (6 0)) ((2 0) (14 0)) ((2 2) (6 2)) ((2 2) (12 0))
-    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
-    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
-    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
-    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (12 0))
-    ((14 3) (13 0)) ((15 2) (14 1)))
-  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" tpmkey pcr aik-0) (14 1))
-  (traces
-    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" (enc v k)))
-      (obsv (hash "refuse" (hash n state)))
-      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
-          tno-1 "false"
-          (hash esk-1
-            (hash "execute transport"
-              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
-            "false")))
-      (tran (hash n state) (hash "refuse" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc n esk-2)))
-            tne-2 tno-2 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-2
-         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-         tno-2 "false"))
-      (send
-        (cat esk-2
-          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
-          tno-2 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
-    ((recv (cat "extend" (enc n esk-2)))
-      (send (cat "extend" (enc n esk-2)))) ((recv esk) (send esk))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
-      (send
-        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
-  (label 58)
-  (parent 56)
-  (unrealized (15 1))
-  (dead)
-  (comment "empty cohort"))
-
-(comment "Nothing left to do")
-
-(defprotocol envelope basic
-  (defrole tpm-power-on (vars) (trace (init "0")))
-  (defrole tpm-quote
-    (vars (nonce pcr mesg) (aik akey))
-    (trace (recv (cat "quote" nonce)) (obsv pcr)
-      (send (enc "quote" pcr nonce aik)))
-    (non-orig aik))
-  (defrole tpm-extend-enc
-    (vars (value state mesg) (esk skey) (tne tno data) (tpmkey akey))
-    (trace (recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc value esk)) tno
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc value esk)))
-            tne tno "false"))) (tran state (hash value state)))
-    (non-orig (invk tpmkey))
-    (uniq-orig tne))
-  (defrole tpm-create-key
-    (vars (k aik akey) (pcr mesg) (esk skey))
-    (trace (recv (enc "create key" pcr esk))
-      (send (enc "created" k pcr aik)))
-    (non-orig (invk k) aik esk)
-    (uniq-orig k))
-  (defrole tpm-decrypt
-    (vars (m pcr mesg) (k aik akey))
-    (trace (recv (cat "decrypt" (enc m k)))
-      (recv (enc "created" k pcr aik)) (obsv pcr) (send m))
-    (non-orig aik))
-  (defrole alice
-    (vars (v n tne tno data) (esk1 esk skey) (k aik tpmkey akey)
-      (pcr mesg))
-    (trace (send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    (non-orig aik esk1 (invk tpmkey))
-    (uniq-orig v n tno esk)
-    (neq (tno n))))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (neq (tno n))
-  (non-orig esk1 aik (invk tpmkey))
-  (uniq-orig v n tno esk)
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k))))
-  (label 59)
-  (unrealized (0 0) (1 5))
-  (preskeleton)
-  (origs (esk (1 0)) (n (1 2)) (tno (1 2)) (v (1 6)))
-  (comment "Not a skeleton"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (precedes ((1 6) (0 0)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk tpmkey))
-  (uniq-orig v n tno esk)
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k))))
-  (label 60)
-  (parent 59)
-  (unrealized (1 5))
-  (origs (esk (1 0)) (n (1 2)) (tno (1 2)) (v (1 6)))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" k (hash "obtain" (hash n pcr)) aik))
-    (aik aik-0))
-  (precedes ((1 6) (0 0)) ((2 2) (1 5)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk tpmkey))
-  (uniq-orig v n tno esk)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" k (hash "obtain" (hash n pcr)) aik) (1 5))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (cat "quote" nonce))
-      (obsv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send
-        (enc "quote" (enc "created" k (hash "obtain" (hash n pcr)) aik)
-          nonce aik-0))))
-  (label 61)
-  (parent 60)
-  (unrealized (2 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk esk-0 skey)
-    (k aik tpmkey akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk-0) (k k) (aik aik))
-  (precedes ((1 6) (0 0)) ((2 1) (1 5)))
-  (neq (tno n))
-  (non-orig esk1 esk-0 aik (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (added-strand tpm-create-key 2)
-    (enc "created" k (hash "obtain" (hash n pcr)) aik) (1 5))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
-  (label 62)
-  (parent 60)
-  (unrealized (0 0) (2 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk esk-0 skey)
-    (k aik tpmkey aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk-0) (k k) (aik aik))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
-    (aik aik-0))
-  (precedes ((1 6) (0 0)) ((2 1) (1 5)) ((3 2) (2 0)))
-  (neq (tno n))
-  (non-orig esk1 esk-0 aik aik-0 (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (2 0))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "quote" nonce))
-      (obsv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
-      (send
-        (enc "quote"
-          (enc "create key" (hash "obtain" (hash n pcr)) esk-0) nonce
-          aik-0))))
-  (label 63)
-  (parent 62)
-  (unrealized (0 0) (3 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (precedes ((1 4) (2 0)) ((1 6) (0 0)) ((2 1) (1 5)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (displaced 3 1 alice 5)
-    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (2 0))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
-  (label 64)
-  (parent 62)
-  (unrealized (0 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr v) (aik aik-0))
-  (precedes ((1 4) (2 0)) ((1 6) (3 1)) ((2 1) (1 5)) ((3 2) (0 0)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation nonce-test (added-strand tpm-quote 3) v (0 0) (enc v k))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "quote" nonce)) (obsv v)
-      (send (enc "quote" v nonce aik-0))))
-  (label 65)
-  (parent 64)
-  (unrealized (3 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (pcr pcr-0 mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr pcr-0) (k k) (aik aik-0))
-  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k pcr-0 aik-0)) (obsv pcr-0) (send v)))
-  (label 66)
-  (parent 64)
-  (unrealized (3 1))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr pcr-0 nonce mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey aik-0 aik-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr pcr-0) (k k) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" k pcr-0 aik-0)) (aik aik-1))
-  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((2 1) (4 1))
-    ((3 3) (0 0)) ((4 2) (3 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" k pcr-0 aik-0) (3 1))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k pcr-0 aik-0)) (obsv pcr-0) (send v))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" k pcr-0 aik-0))
-      (send (enc "quote" (enc "created" k pcr-0 aik-0) nonce aik-1))))
-  (label 67)
-  (parent 66)
-  (unrealized (4 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
-    (k aik tpmkey akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n pcr)))
-    (k k) (aik aik))
-  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey))
-  (uniq-orig v n tno esk k)
-  (operation encryption-test (displaced 4 2 tpm-create-key 2)
-    (enc "created" k pcr-0 aik-0) (3 1))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (obsv (hash "obtain" (hash n pcr))) (send v)))
-  (label 68)
-  (parent 66)
-  (unrealized (3 2))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (pcr mesg) (v n tne tno tne-0 tno-0 data) (esk1 esk esk-0 skey)
-    (k aik tpmkey tpmkey-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n pcr)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n pcr))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0))
-    ((4 3) (3 2)))
-  (leadsto ((4 3) (3 2)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0))
-  (uniq-orig v n tno tne-0 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "obtain" (hash n pcr)) (3 2))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv pcr)
-      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
-      (obsv (hash "obtain" (hash n pcr))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n pcr) (hash "obtain" (hash n pcr)))))
-  (label 69)
-  (parent 68)
-  (unrealized (4 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 3) (4 3)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash n state) (4 3))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state))))
-  (label 70)
-  (parent 69)
-  (unrealized (5 2))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr
-      (hash esk-1
-        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-        tno-1 "false")) (aik aik-0))
-  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 3) (4 3)) ((6 2) (5 2)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false") (5 2))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce))
-      (obsv
-        (hash esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false"))
-      (send
-        (enc "quote"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false") nonce aik-0))))
-  (label 71)
-  (parent 70)
-  (unrealized (5 2) (6 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey-1))
-  (precedes ((1 0) (5 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
-    ((5 3) (4 3)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation encryption-test (displaced 6 1 alice 3)
-    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false") (5 2))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state))))
-  (label 72)
-  (parent 70)
-  (unrealized (5 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test
-    (added-listener
-      (cat esk-1
-        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-        tno-1 "false"))
-    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false") (5 2))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false"))))
-  (label 73)
-  (parent 70)
-  (unrealized (5 2) (6 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr
-      (hash esk-1
-        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-        tno-1 "false")) (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value esk-1)
-    (state
-      (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
-        tne-1 tno-1 "false")) (tne tne-2) (tno tno-2) (esk esk-2)
-    (tpmkey tpmkey-2))
-  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (7 3)) ((5 3) (4 3))
-    ((6 2) (5 2)) ((7 3) (6 1)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)) ((7 3) (6 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false") (6 1))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce))
-      (obsv
-        (hash esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false"))
-      (send
-        (enc "quote"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false") nonce aik-0)))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc esk-1 esk-2)) tno-2
-          "false"
-          (hash esk-2
-            (hash "execute transport" (hash "extend" (enc esk-1 esk-2)))
-            tne-2 tno-2 "false")))
-      (tran
-        (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
-          tne-1 tno-1 "false")
-        (hash esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false"))))
-  (label 74)
-  (parent 71)
-  (unrealized (5 2) (7 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey))
-  (precedes ((1 0) (5 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
-    ((5 3) (4 3)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation nonce-test (contracted (tpmkey-1 tpmkey)) esk (5 0)
-    (enc esk tpmkey))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state))))
-  (label 75)
-  (parent 72)
-  (unrealized)
-  (shape)
-  (maps
-    ((0 1)
-      ((v v) (n n) (tne tne) (tno tno) (esk1 esk1) (esk esk) (k k)
-        (aik aik) (tpmkey tpmkey) (pcr state))))
-  (origs (n (1 2)) (tno (1 2)) (esk (1 0)) (tne (5 1)) (tne-0 (4 1))
-    (k (2 1)) (v (1 6))))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey-1))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
-  (precedes ((1 0) (6 1)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
-    ((5 3) (4 3)) ((6 2) (5 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) esk (5 0)
-    (enc esk tpmkey))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "quote" nonce)) (obsv esk)
-      (send (enc "quote" esk nonce aik-0))))
-  (label 76)
-  (parent 72)
-  (unrealized (6 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey-1))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (precedes ((1 0) (6 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
-    ((5 3) (4 3)) ((6 3) (5 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) esk (5 0)
-    (enc esk tpmkey))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
-  (label 77)
-  (parent 72)
-  (unrealized (6 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
-    (aik aik-0))
-  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)) ((7 2) (6 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash "execute transport" (hash "extend" (enc n esk-1))) (6 0))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
-          aik-0))))
-  (label 78)
-  (parent 73)
-  (unrealized (5 2) (7 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)) ((7 1) (6 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test
-    (added-listener
-      (cat "execute transport" (hash "extend" (enc n esk-1))))
-    (hash "execute transport" (hash "extend" (enc n esk-1))) (6 0))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1))))))
-  (label 79)
-  (parent 73)
-  (unrealized (5 2) (7 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state pcr nonce mesg) (v n tne tno tne-0 tno-0 data)
-    (esk1 esk esk-0 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
-    (tno tno) (esk esk) (tpmkey tpmkey-1))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
-  (precedes ((1 0) (6 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
-    ((5 3) (4 3)) ((6 3) (5 0)) ((7 2) (6 1)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tne tno tne-0 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" tpmkey pcr aik-0) (6 1))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (tran state (hash n state)))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
-      (send
-        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
-  (label 80)
-  (parent 77)
-  (unrealized (7 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
-    (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "execute transport")
-    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
-    (esk esk-2) (tpmkey tpmkey-2))
-  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)) ((7 2) (6 0)) ((8 3) (7 1)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)) ((8 3) (7 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "execute transport" (hash "extend" (enc n esk-1))) (7 1))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
-          aik-0)))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport"
-          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
-          (hash esk-2
-            (hash "execute transport"
-              (hash "extend" (enc "execute transport" esk-2))) tne-2
-            tno-2 "false")))
-      (tran (hash "extend" (enc n esk-1))
-        (hash "execute transport" (hash "extend" (enc n esk-1))))))
-  (label 81)
-  (parent 78)
-  (unrealized (5 2) (8 3))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
-  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)) ((7 1) (6 0)) ((8 2) (7 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (hash "extend" (enc n esk-1)) (7 0))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
-      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0))))
-  (label 82)
-  (parent 79)
-  (unrealized (5 2) (8 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (precedes ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test
-    (added-listener (cat "extend" (enc n esk-1)))
-    (hash "extend" (enc n esk-1)) (7 0))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))))
-  (label 83)
-  (parent 79)
-  (unrealized (8 0))
-  (comment "3 in cohort - 3 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
-    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 tpmkey-3 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
-    (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "execute transport")
-    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
-    (esk esk-2) (tpmkey tpmkey-2))
-  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
-    (tne tne-3) (tno tno-3) (esk esk-3) (tpmkey tpmkey-3))
-  (precedes ((1 2) (9 3)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)) ((7 2) (6 0)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)) ((8 3) (7 1)) ((9 3) (8 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2) (invk tpmkey-3))
-  (uniq-orig v n tno tne-0 tne-1 tne-2 tne-3 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "extend" (enc n esk-1)) (8 3))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "quote" nonce))
-      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
-      (send
-        (enc "quote"
-          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
-          aik-0)))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport"
-          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
-          (hash esk-2
-            (hash "execute transport"
-              (hash "extend" (enc "execute transport" esk-2))) tne-2
-            tno-2 "false")))
-      (tran (hash "extend" (enc n esk-1))
-        (hash "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
-      (send (cat "establish transport" tne-3))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "extend" esk-3))
-          tno-3 "false"
-          (hash esk-3
-            (hash "execute transport"
-              (hash "extend" (enc "extend" esk-3))) tne-3 tno-3
-            "false")))
-      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
-  (label 84)
-  (parent 81)
-  (unrealized (5 2) (9 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
-    (esk1 esk esk-0 esk-1 esk-2 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
-  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
-    (tne tne-2) (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
-  (precedes ((1 2) (9 3)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)) ((7 1) (6 0)) ((8 2) (7 0)) ((9 3) (8 1)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)) ((9 3) (8 1)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1) (invk tpmkey-2))
-  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
-  (operation state-passing-test (added-strand tpm-extend-enc 4)
-    (hash "extend" (enc n esk-1)) (8 1))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
-      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0)))
-    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
-      (send (cat "establish transport" tne-2))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "extend" esk-2))
-          tno-2 "false"
-          (hash esk-2
-            (hash "execute transport"
-              (hash "extend" (enc "extend" esk-2))) tne-2 tno-2
-            "false")))
-      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
-  (label 85)
-  (parent 82)
-  (unrealized (5 2) (9 3))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (precedes ((1 0) (5 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
-    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (contracted (esk-1 esk)) n (8 0) (enc n esk))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
-            tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-1 tno-1 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-1 tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk)))))
-  (label 86)
-  (parent 83)
-  (unrealized (5 0) (6 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr n) (aik aik-0))
-  (precedes ((1 2) (9 1)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
-    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
-    ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)) ((9 2) (8 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) n (8 0) (enc n esk))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1))))
-    ((recv (cat "quote" nonce)) (obsv n)
-      (send (enc "quote" n nonce aik-0))))
-  (label 87)
-  (parent 83)
-  (unrealized (9 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (deflistener esk)
-  (precedes ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
-    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
-    ((9 1) (8 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-listener esk) n (8 0) (enc n esk))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk)))
-  (label 88)
-  (parent 83)
-  (unrealized (9 0))
-  (comment "2 in cohort - 2 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
-  (precedes ((1 0) (5 0)) ((1 0) (9 1)) ((1 2) (8 0)) ((1 4) (2 0))
-    ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2))
-    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
-    ((8 1) (7 0)) ((9 2) (6 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) esk (6 0)
-    (enc esk tpmkey))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
-            tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-1 tno-1 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-1 tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "quote" nonce)) (obsv esk)
-      (send (enc "quote" esk nonce aik-0))))
-  (label 89)
-  (parent 86)
-  (unrealized (5 0) (9 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (precedes ((1 0) (5 0)) ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0))
-    ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2))
-    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
-    ((8 1) (7 0)) ((9 3) (6 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) esk (6 0)
-    (enc esk tpmkey))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
-            tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-1 tno-1 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-1 tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
-  (label 90)
-  (parent 86)
-  (unrealized (5 0) (9 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (deflistener esk)
-  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
-  (precedes ((1 0) (10 1)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
-    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
-    ((9 1) (8 0)) ((10 2) (9 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-quote 3) esk (9 0)
-    (enc esk tpmkey))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
-    ((recv (cat "quote" nonce)) (obsv esk)
-      (send (enc "quote" esk nonce aik-0))))
-  (label 91)
-  (parent 88)
-  (unrealized (10 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (deflistener esk)
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (precedes ((1 0) (10 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
-    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
-    ((9 1) (8 0)) ((10 3) (9 0)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation nonce-test (added-strand tpm-decrypt 4) esk (9 0)
-    (enc esk tpmkey))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
-  (label 92)
-  (parent 88)
-  (unrealized (10 1))
-  (comment "1 in cohort - 1 not yet seen"))
-
-(defskeleton envelope
-  (vars (state pcr nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 data) (esk1 esk esk-0 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
-  (deflistener (cat "extend" (enc n esk)))
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
-  (precedes ((1 0) (5 0)) ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0))
-    ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2))
-    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
-    ((8 1) (7 0)) ((9 3) (6 0)) ((10 2) (9 1)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" tpmkey pcr aik-0) (9 1))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
-          "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
-            tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-         tne-1 tno-1 "false"))
-      (send
-        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
-          tne-1 tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
-      (send (cat "execute transport" (hash "extend" (enc n esk)))))
-    ((recv (cat "extend" (enc n esk)))
-      (send (cat "extend" (enc n esk))))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
-      (send
-        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
-  (label 93)
-  (parent 90)
-  (unrealized (5 0) (10 1))
-  (dead)
-  (comment "empty cohort"))
-
-(defskeleton envelope
-  (vars (state pcr nonce mesg)
-    (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
-    (esk1 esk esk-0 esk-1 skey)
-    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
-  (deflistener v)
-  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
-    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
-  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
-    (esk esk1) (k k) (aik aik))
-  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
-    (k k) (aik aik))
-  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
-    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
-  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
-    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
-  (deflistener
-    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
-      tne-1 tno-1 "false"))
-  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
-  (deflistener (cat "extend" (enc n esk-1)))
-  (deflistener esk)
-  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
-  (defstrand tpm-quote 3 (nonce nonce)
-    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
-  (precedes ((1 0) (10 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
-    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
-    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
-    ((9 1) (8 0)) ((10 3) (9 0)) ((11 2) (10 1)))
-  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
-  (neq (tno n))
-  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey) (invk tpmkey-0)
-    (invk tpmkey-1))
-  (uniq-orig v n tno tne-0 tne-1 esk k)
-  (operation encryption-test (added-strand tpm-quote 3)
-    (enc "created" tpmkey pcr aik-0) (10 1))
-  (traces ((recv v) (send v))
-    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
-      (recv (cat "establish transport" tne))
-      (send
-        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
-          (hash esk
-            (hash "execute transport" (hash "extend" (enc n esk))) tne
-            tno "false"))) (recv state)
-      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (send (enc v k)))
-    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
-      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
-    ((recv (cat "decrypt" (enc v k)))
-      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
-      (obsv (hash "obtain" (hash n state))) (send v))
-    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
-      (send (cat "establish transport" tne-0))
-      (recv
-        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
-          tno-0 "false"
-          (hash esk-0
-            (hash "execute transport"
-              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
-            "false")))
-      (tran (hash n state) (hash "obtain" (hash n state))))
-    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
-      (send (cat "establish transport" tne-1))
-      (recv
-        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
-          "false"
-          (hash esk-1
-            (hash "execute transport" (hash "extend" (enc n esk-1)))
-            tne-1 tno-1 "false"))) (tran state (hash n state)))
-    ((recv
-       (cat esk-1
-         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-         tno-1 "false"))
-      (send
-        (cat esk-1
-          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
-          tno-1 "false")))
-    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
-      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
-    ((recv (cat "extend" (enc n esk-1)))
-      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
-    ((recv (cat "decrypt" (enc esk tpmkey)))
-      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
-    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
-      (send
-        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
-  (label 94)
-  (parent 92)
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/envelope.scm")
+(comment "Strand count bounded at 20")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on (vars) (trace (init "0")))
+  (defrole tpm-quote
+    (vars (nonce pcr mesg) (aik akey))
+    (trace (recv (cat "quote" nonce)) (obsv pcr)
+      (send (enc "quote" pcr nonce aik)))
+    (non-orig aik))
+  (defrole tpm-extend-enc
+    (vars (value state mesg) (esk skey) (tne tno data) (tpmkey akey))
+    (trace (recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc value esk)) tno
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc value esk)))
+            tne tno "false"))) (tran state (hash value state)))
+    (uniq-orig tne))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr mesg) (esk skey))
+    (trace (recv (enc "create key" pcr esk))
+      (send (enc "created" k pcr aik)))
+    (non-orig (invk k) aik esk)
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcr mesg) (k aik akey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr aik)) (obsv pcr) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (v n tne tno data) (esk1 esk skey) (k aik tpmkey akey)
+      (pcr mesg))
+    (trace (send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    (non-orig aik esk1 (invk tpmkey))
+    (uniq-orig v n tno esk)
+    (neq (tno n))))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk esk1 skey)
+    (k aik tpmkey akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (neq (tno n))
+  (non-orig esk1 aik (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k))))
+  (label 0)
+  (unrealized (0 0) (1 5))
+  (preskeleton)
+  (origs (esk (1 0)) (n (1 2)) (tno (1 2)) (v (1 6)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk esk1 skey)
+    (k aik tpmkey akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (precedes ((1 0) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k))))
+  (label 1)
+  (parent 0)
+  (unrealized (0 0) (1 5))
+  (origs (esk (1 0)) (n (1 2)) (tno (1 2)) (v (1 6)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk esk1 skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" k (hash "obtain" (hash n pcr)) aik))
+    (aik aik-0))
+  (precedes ((1 0) (0 0)) ((2 2) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" k (hash "obtain" (hash n pcr)) aik) (1 5))
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send
+        (enc "quote" (enc "created" k (hash "obtain" (hash n pcr)) aik)
+          nonce aik-0))))
+  (label 2)
+  (parent 1)
+  (unrealized (0 0) (2 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk esk1 esk-0 skey)
+    (k aik tpmkey akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk-0) (k k) (aik aik))
+  (precedes ((1 0) (0 0)) ((2 1) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 esk-0 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-create-key 2)
+    (enc "created" k (hash "obtain" (hash n pcr)) aik) (1 5))
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
+  (label 3)
+  (parent 1)
+  (unrealized (0 0) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk esk1 esk-0 skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk-0) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+    (aik aik-0))
+  (precedes ((1 0) (0 0)) ((2 1) (1 5)) ((3 2) (2 0)))
+  (neq (tno n))
+  (non-orig esk1 esk-0 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (2 0))
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send
+        (enc "quote"
+          (enc "create key" (hash "obtain" (hash n pcr)) esk-0) nonce
+          aik-0))))
+  (label 4)
+  (parent 3)
+  (unrealized (0 0) (3 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk esk1 skey)
+    (k aik tpmkey akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (precedes ((1 0) (0 0)) ((1 4) (2 0)) ((2 1) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (displaced 3 1 alice 5)
+    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (2 0))
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
+  (label 5)
+  (parent 3)
+  (unrealized (0 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk esk1 skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((1 0) (3 1)) ((1 4) (2 0)) ((2 1) (1 5)) ((3 2) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (0 0)
+    (enc esk tpmkey))
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 6)
+  (parent 5)
+  (unrealized (3 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr pcr-0 mesg) (v n tne tno data) (esk esk1 skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr-0) (k tpmkey) (aik aik-0))
+  (precedes ((1 0) (3 0)) ((1 4) (2 0)) ((2 1) (1 5)) ((3 3) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (0 0)
+    (enc esk tpmkey))
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr-0 aik-0)) (obsv pcr-0)
+      (send esk)))
+  (label 7)
+  (parent 5)
+  (unrealized (3 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr pcr-0 nonce mesg) (v n tne tno data) (esk esk1 skey)
+    (k aik tpmkey aik-0 aik-1 akey))
+  (deflistener esk)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr-0) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr-0 aik-0)) (aik aik-1))
+  (precedes ((1 0) (3 0)) ((1 4) (2 0)) ((2 1) (1 5)) ((3 3) (0 0))
+    ((4 2) (3 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr-0 aik-0) (3 1))
+  (traces ((recv esk) (send esk))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr-0 aik-0)) (obsv pcr-0) (send esk))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "created" tpmkey pcr-0 aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr-0 aik-0) nonce aik-1))))
+  (label 8)
+  (parent 7)
+  (unrealized (4 1))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on (vars) (trace (init "0")))
+  (defrole tpm-quote
+    (vars (nonce pcr mesg) (aik akey))
+    (trace (recv (cat "quote" nonce)) (obsv pcr)
+      (send (enc "quote" pcr nonce aik)))
+    (non-orig aik))
+  (defrole tpm-extend-enc
+    (vars (value state mesg) (esk skey) (tne tno data) (tpmkey akey))
+    (trace (recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc value esk)) tno
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc value esk)))
+            tne tno "false"))) (tran state (hash value state)))
+    (uniq-orig tne))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr mesg) (esk skey))
+    (trace (recv (enc "create key" pcr esk))
+      (send (enc "created" k pcr aik)))
+    (non-orig (invk k) aik esk)
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcr mesg) (k aik akey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr aik)) (obsv pcr) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (v n tne tno data) (esk1 esk skey) (k aik tpmkey akey)
+      (pcr mesg))
+    (trace (send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    (non-orig aik esk1 (invk tpmkey))
+    (uniq-orig v n tno esk)
+    (neq (tno n))))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (neq (tno n))
+  (non-orig esk1 aik (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k))))
+  (label 9)
+  (unrealized (0 0) (1 0) (2 5))
+  (preskeleton)
+  (origs (esk (2 0)) (n (2 2)) (tno (2 2)) (v (2 6)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (precedes ((2 6) (0 0)) ((2 6) (1 0)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k))))
+  (label 10)
+  (parent 9)
+  (unrealized (0 0) (2 5))
+  (origs (esk (2 0)) (n (2 2)) (tno (2 2)) (v (2 6)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" k (hash "obtain" (hash n pcr)) aik))
+    (aik aik-0))
+  (precedes ((2 6) (0 0)) ((2 6) (1 0)) ((3 2) (2 5)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" k (hash "obtain" (hash n pcr)) aik) (2 5))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send
+        (enc "quote" (enc "created" k (hash "obtain" (hash n pcr)) aik)
+          nonce aik-0))))
+  (label 11)
+  (parent 10)
+  (unrealized (0 0) (3 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk esk-0 skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk-0) (k k) (aik aik))
+  (precedes ((2 6) (0 0)) ((2 6) (1 0)) ((3 1) (2 5)))
+  (neq (tno n))
+  (non-orig esk1 esk-0 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-create-key 2)
+    (enc "created" k (hash "obtain" (hash n pcr)) aik) (2 5))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
+  (label 12)
+  (parent 10)
+  (unrealized (0 0) (1 0) (3 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk esk-0 skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk-0) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+    (aik aik-0))
+  (precedes ((2 6) (0 0)) ((2 6) (1 0)) ((3 1) (2 5)) ((4 2) (3 0)))
+  (neq (tno n))
+  (non-orig esk1 esk-0 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (3 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send
+        (enc "quote"
+          (enc "create key" (hash "obtain" (hash n pcr)) esk-0) nonce
+          aik-0))))
+  (label 13)
+  (parent 12)
+  (unrealized (0 0) (1 0) (4 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (1 0)) ((3 1) (2 5)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (displaced 4 2 alice 5)
+    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (3 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
+  (label 14)
+  (parent 12)
+  (unrealized (0 0) (1 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr v) (aik aik-0))
+  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 1)) ((3 1) (2 5))
+    ((4 2) (1 0)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation nonce-test (added-strand tpm-quote 3) v (1 0) (enc v k))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" nonce)) (obsv v)
+      (send (enc "quote" v nonce aik-0))))
+  (label 15)
+  (parent 14)
+  (unrealized (0 0) (4 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr pcr-0 mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr pcr-0) (k k) (aik aik-0))
+  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5))
+    ((4 3) (1 0)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) v (1 0) (enc v k))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-0 aik-0)) (obsv pcr-0) (send v)))
+  (label 16)
+  (parent 14)
+  (unrealized (0 0) (4 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr pcr-0 nonce mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 aik-1 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr pcr-0) (k k) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" k pcr-0 aik-0)) (aik aik-1))
+  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5))
+    ((3 1) (5 1)) ((4 3) (1 0)) ((5 2) (4 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" k pcr-0 aik-0) (4 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-0 aik-0)) (obsv pcr-0) (send v))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" k pcr-0 aik-0))
+      (send (enc "quote" (enc "created" k pcr-0 aik-0) nonce aik-1))))
+  (label 17)
+  (parent 16)
+  (unrealized (0 0) (5 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n pcr)))
+    (k k) (aik aik))
+  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5))
+    ((4 3) (1 0)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (displaced 5 3 tpm-create-key 2)
+    (enc "created" k pcr-0 aik-0) (4 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (obsv (hash "obtain" (hash n pcr))) (send v)))
+  (label 18)
+  (parent 16)
+  (unrealized (0 0) (4 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno tne-0 tno-0 data) (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n pcr)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n pcr))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (precedes ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5))
+    ((4 3) (1 0)) ((5 3) (4 2)))
+  (leadsto ((5 3) (4 2)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "obtain" (hash n pcr)) (4 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (obsv (hash "obtain" (hash n pcr))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n pcr) (hash "obtain" (hash n pcr)))))
+  (label 19)
+  (parent 18)
+  (unrealized (0 0) (5 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 3) (5 3)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash n state) (5 3))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state))))
+  (label 20)
+  (parent 19)
+  (unrealized (0 0) (6 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr
+      (hash esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false")) (aik aik-0))
+  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 3) (5 3))
+    ((7 2) (6 2)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (6 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))
+      (send
+        (enc "quote"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false") nonce aik-0))))
+  (label 21)
+  (parent 20)
+  (unrealized (0 0) (6 2) (7 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (2 1)) ((6 3) (5 3)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation encryption-test (displaced 7 2 alice 3)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (6 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state))))
+  (label 22)
+  (parent 20)
+  (unrealized (0 0) (6 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener
+      (cat esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false"))
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (6 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))))
+  (label 23)
+  (parent 20)
+  (unrealized (0 0) (6 2) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr
+      (hash esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false")) (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value esk-1)
+    (state
+      (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
+        tne-1 tno-1 "false")) (tne tne-2) (tno tno-2) (esk esk-2)
+    (tpmkey tpmkey-2))
+  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (8 3))
+    ((6 3) (5 3)) ((7 2) (6 2)) ((8 3) (7 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (7 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))
+      (send
+        (enc "quote"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false") nonce aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc esk-1 esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc esk-1 esk-2)))
+            tne-2 tno-2 "false")))
+      (tran
+        (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
+          tne-1 tno-1 "false")
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))))
+  (label 24)
+  (parent 21)
+  (unrealized (0 0) (6 2) (8 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (2 1)) ((6 3) (5 3)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (contracted (tpmkey-1 tpmkey)) esk (6 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state))))
+  (label 25)
+  (parent 22)
+  (unrealized (0 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((2 0) (7 1)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (6 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (6 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 26)
+  (parent 22)
+  (unrealized (0 0) (7 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((2 0) (7 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (2 1)) ((6 3) (5 3)) ((7 3) (6 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (6 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 27)
+  (parent 22)
+  (unrealized (0 0) (7 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)) ((8 2) (7 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (7 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0))))
+  (label 28)
+  (parent 23)
+  (unrealized (0 0) (6 2) (8 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener
+      (cat "execute transport" (hash "extend" (enc n esk-1))))
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (7 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1))))))
+  (label 29)
+  (parent 23)
+  (unrealized (0 0) (6 2) (8 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (4 0))
+    ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik) (0 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send
+        (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))))
+  (label 30)
+  (parent 25)
+  (unrealized (7 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+    (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (4 0))
+    ((2 6) (7 1)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik) (0 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send
+        (enc "quote"
+          (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)
+          nonce aik-0))))
+  (label 31)
+  (parent 25)
+  (unrealized (7 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((2 0) (7 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (2 1)) ((6 3) (5 3)) ((7 3) (6 0)) ((8 2) (7 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (7 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 32)
+  (parent 27)
+  (unrealized (0 0) (8 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "execute transport")
+    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
+    (esk esk-2) (tpmkey tpmkey-2))
+  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)) ((8 2) (7 0)) ((9 3) (8 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((9 3) (8 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (8 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport"
+          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "execute transport" esk-2))) tne-2
+            tno-2 "false")))
+      (tran (hash "extend" (enc n esk-1))
+        (hash "execute transport" (hash "extend" (enc n esk-1))))))
+  (label 33)
+  (parent 28)
+  (unrealized (0 0) (6 2) (9 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
+  (precedes ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)) ((9 2) (8 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash "extend" (enc n esk-1)) (8 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
+      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0))))
+  (label 34)
+  (parent 29)
+  (unrealized (0 0) (6 2) (9 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (precedes ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)) ((9 1) (8 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener (cat "extend" (enc n esk-1)))
+    (hash "extend" (enc n esk-1)) (8 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))))
+  (label 35)
+  (parent 29)
+  (unrealized (0 0) (9 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 4) (3 0)) ((2 6) (4 0))
+    ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0)) ((8 3) (7 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "refuse" (hash n state)) (7 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state)))))
+  (label 36)
+  (parent 30)
+  (unrealized (8 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
+    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 tpmkey-3 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "execute transport")
+    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
+    (esk esk-2) (tpmkey tpmkey-2))
+  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
+    (tne tne-3) (tno tno-3) (esk esk-3) (tpmkey tpmkey-3))
+  (precedes ((2 2) (10 3)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)) ((8 2) (7 0)) ((9 3) (8 1))
+    ((10 3) (9 3)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((9 3) (8 1)) ((10 3) (9 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 tne-3 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "extend" (enc n esk-1)) (9 3))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport"
+          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "execute transport" esk-2))) tne-2
+            tno-2 "false")))
+      (tran (hash "extend" (enc n esk-1))
+        (hash "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
+      (send (cat "establish transport" tne-3))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "extend" esk-3))
+          tno-3 "false"
+          (hash esk-3
+            (hash "execute transport"
+              (hash "extend" (enc "extend" esk-3))) tne-3 tno-3
+            "false")))
+      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
+  (label 37)
+  (parent 33)
+  (unrealized (0 0) (6 2) (10 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
+    (tne tne-2) (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (precedes ((2 2) (10 3)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)) ((9 2) (8 0))
+    ((10 3) (9 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((10 3) (9 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "extend" (enc n esk-1)) (9 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
+      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "extend" esk-2))
+          tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "extend" esk-2))) tne-2 tno-2
+            "false")))
+      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
+  (label 38)
+  (parent 34)
+  (unrealized (0 0) (6 2) (10 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (precedes ((2 0) (6 0)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
+    ((9 1) (8 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (contracted (esk-1 esk)) n (9 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk)))))
+  (label 39)
+  (parent 35)
+  (unrealized (0 0) (6 0) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr n) (aik aik-0))
+  (precedes ((2 2) (10 1)) ((2 4) (3 0)) ((2 6) (0 0)) ((2 6) (4 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (7 0))
+    ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0)) ((9 1) (8 0))
+    ((10 2) (9 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) n (9 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1))))
+    ((recv (cat "quote" nonce)) (obsv n)
+      (send (enc "quote" n nonce aik-0))))
+  (label 40)
+  (parent 35)
+  (unrealized (0 0) (10 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (precedes ((2 0) (10 0)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 1) (9 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-listener esk) n (9 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk)))
+  (label 41)
+  (parent 35)
+  (unrealized (0 0) (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 3) (8 3)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash n state) (8 3))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state))))
+  (label 42)
+  (parent 36)
+  (unrealized (9 2))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 0) (10 1)) ((2 2) (9 0)) ((2 4) (3 0))
+    ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2))
+    ((8 1) (7 0)) ((9 1) (8 0)) ((10 2) (7 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (7 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 43)
+  (parent 39)
+  (unrealized (0 0) (6 0) (10 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 2) (9 0)) ((2 4) (3 0))
+    ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2))
+    ((8 1) (7 0)) ((9 1) (8 0)) ((10 3) (7 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (7 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 44)
+  (parent 39)
+  (unrealized (0 0) (6 0) (10 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((2 0) (11 1)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 1) (9 0)) ((11 2) (10 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (10 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 45)
+  (parent 41)
+  (unrealized (0 0) (11 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((2 0) (11 0)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 1) (9 0)) ((11 3) (10 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (10 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 46)
+  (parent 41)
+  (unrealized (0 0) (11 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr
+      (hash esk-2
+        (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+        tno-2 "false")) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 3) (8 3)) ((10 2) (9 2)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false") (9 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv
+        (hash esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false"))
+      (send
+        (enc "quote"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false") nonce aik-0))))
+  (label 47)
+  (parent 42)
+  (unrealized (9 2) (10 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation encryption-test
+    (added-listener
+      (cat esk-2
+        (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+        tno-2 "false"))
+    (hash esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false") (9 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false"))))
+  (label 48)
+  (parent 42)
+  (unrealized (9 2) (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 data) (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((2 0) (6 0)) ((2 0) (10 0)) ((2 2) (9 0)) ((2 4) (3 0))
+    ((2 6) (0 0)) ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2))
+    ((8 1) (7 0)) ((9 1) (8 0)) ((10 3) (7 0)) ((11 2) (10 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (10 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 49)
+  (parent 44)
+  (unrealized (0 0) (6 0) (11 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((2 0) (11 0)) ((2 2) (9 0)) ((2 4) (3 0)) ((2 6) (0 0))
+    ((2 6) (4 0)) ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2))
+    ((6 1) (7 0)) ((6 3) (5 3)) ((7 1) (6 2)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 1) (9 0)) ((11 3) (10 0)) ((12 2) (11 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (11 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 50)
+  (parent 46)
+  (unrealized (0 0) (12 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
+    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 tpmkey-3 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr
+      (hash esk-2
+        (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+        tno-2 "false")) (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value esk-2)
+    (state
+      (cat (hash "execute transport" (hash "extend" (enc n esk-2)))
+        tne-2 tno-2 "false")) (tne tne-3) (tno tno-3) (esk esk-3)
+    (tpmkey tpmkey-3))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (11 3)) ((9 3) (8 3)) ((10 2) (9 2))
+    ((11 3) (10 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3))
+    ((11 3) (10 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 tne-3 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false") (10 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv
+        (hash esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false"))
+      (send
+        (enc "quote"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false") nonce aik-0)))
+    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
+      (send (cat "establish transport" tne-3))
+      (recv
+        (cat "execute transport" (cat "extend" (enc esk-2 esk-3)) tno-3
+          "false"
+          (hash esk-3
+            (hash "execute transport" (hash "extend" (enc esk-2 esk-3)))
+            tne-3 tno-3 "false")))
+      (tran
+        (cat (hash "execute transport" (hash "extend" (enc n esk-2)))
+          tne-2 tno-2 "false")
+        (hash esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false"))))
+  (label 51)
+  (parent 47)
+  (unrealized (9 2) (11 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-2))))
+    (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
+    ((11 2) (10 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash "execute transport" (hash "extend" (enc n esk-2))) (10 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-2))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-2))) nonce
+          aik-0))))
+  (label 52)
+  (parent 48)
+  (unrealized (9 2) (11 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
+    ((11 1) (10 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation encryption-test
+    (added-listener
+      (cat "execute transport" (hash "extend" (enc n esk-2))))
+    (hash "execute transport" (hash "extend" (enc n esk-2))) (10 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2))))))
+  (label 53)
+  (parent 48)
+  (unrealized (9 2) (11 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
+    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 tpmkey-3 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-2))))
+    (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "execute transport")
+    (state (hash "extend" (enc n esk-2))) (tne tne-3) (tno tno-3)
+    (esk esk-3) (tpmkey tpmkey-3))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
+    ((11 2) (10 0)) ((12 3) (11 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3))
+    ((12 3) (11 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 tne-3 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "execute transport" (hash "extend" (enc n esk-2))) (11 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-2))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-2))) nonce
+          aik-0)))
+    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
+      (send (cat "establish transport" tne-3))
+      (recv
+        (cat "execute transport"
+          (cat "extend" (enc "execute transport" esk-3)) tno-3 "false"
+          (hash esk-3
+            (hash "execute transport"
+              (hash "extend" (enc "execute transport" esk-3))) tne-3
+            tno-3 "false")))
+      (tran (hash "extend" (enc n esk-2))
+        (hash "execute transport" (hash "extend" (enc n esk-2))))))
+  (label 54)
+  (parent 52)
+  (unrealized (9 2) (12 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "extend" (enc n esk-2))) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (9 2)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
+    ((11 1) (10 0)) ((12 2) (11 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash "extend" (enc n esk-2)) (11 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-2)))
+      (send (enc "quote" (hash "extend" (enc n esk-2)) nonce aik-0))))
+  (label 55)
+  (parent 53)
+  (unrealized (9 2) (12 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (deflistener (cat "extend" (enc n esk-2)))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (12 0)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
+    ((11 1) (10 0)) ((12 1) (11 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation encryption-test
+    (added-listener (cat "extend" (enc n esk-2)))
+    (hash "extend" (enc n esk-2)) (11 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "extend" (enc n esk-2)))
+      (send (cat "extend" (enc n esk-2)))))
+  (label 56)
+  (parent 53)
+  (unrealized (12 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 tne-4
+      tno-4 data) (esk1 esk esk-0 esk-1 esk-2 esk-3 esk-4 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 tpmkey-3 tpmkey-4
+      akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-2))))
+    (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "execute transport")
+    (state (hash "extend" (enc n esk-2))) (tne tne-3) (tno tno-3)
+    (esk esk-3) (tpmkey tpmkey-3))
+  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-2))
+    (tne tne-4) (tno tno-4) (esk esk-4) (tpmkey tpmkey-4))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (13 3)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
+    ((11 2) (10 0)) ((12 3) (11 1)) ((13 3) (12 3)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3))
+    ((12 3) (11 1)) ((13 3) (12 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 tne-3 tne-4 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "extend" (enc n esk-2)) (12 3))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-2))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-2))) nonce
+          aik-0)))
+    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
+      (send (cat "establish transport" tne-3))
+      (recv
+        (cat "execute transport"
+          (cat "extend" (enc "execute transport" esk-3)) tno-3 "false"
+          (hash esk-3
+            (hash "execute transport"
+              (hash "extend" (enc "execute transport" esk-3))) tne-3
+            tno-3 "false")))
+      (tran (hash "extend" (enc n esk-2))
+        (hash "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "establish transport" tpmkey-4 (enc esk-4 tpmkey-4)))
+      (send (cat "establish transport" tne-4))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "extend" esk-4))
+          tno-4 "false"
+          (hash esk-4
+            (hash "execute transport"
+              (hash "extend" (enc "extend" esk-4))) tne-4 tno-4
+            "false")))
+      (tran (enc n esk-2) (hash "extend" (enc n esk-2)))))
+  (label 57)
+  (parent 54)
+  (unrealized (9 2) (13 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
+    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 tpmkey-3 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "extend" (enc n esk-2))) (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-2))
+    (tne tne-3) (tno tno-3) (esk esk-3) (tpmkey tpmkey-3))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (13 3)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
+    ((11 1) (10 0)) ((12 2) (11 0)) ((13 3) (12 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3))
+    ((13 3) (12 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 tne-3 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "extend" (enc n esk-2)) (12 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-2)))
+      (send (enc "quote" (hash "extend" (enc n esk-2)) nonce aik-0)))
+    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
+      (send (cat "establish transport" tne-3))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "extend" esk-3))
+          tno-3 "false"
+          (hash esk-3
+            (hash "execute transport"
+              (hash "extend" (enc "extend" esk-3))) tne-3 tno-3
+            "false")))
+      (tran (enc n esk-2) (hash "extend" (enc n esk-2)))))
+  (label 58)
+  (parent 55)
+  (unrealized (9 2) (13 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 2) (6 2)) ((2 2) (12 0))
+    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
+    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
+    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
+    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation nonce-test (contracted (esk-2 esk)) n (12 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-2
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-2
+            tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-2 tno-2 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-2 tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk)))))
+  (label 59)
+  (parent 56)
+  (unrealized (9 0) (10 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (deflistener (cat "extend" (enc n esk-2)))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr n) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 2) (6 2)) ((2 2) (13 1)) ((2 4) (3 0))
+    ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5)) ((4 3) (1 0))
+    ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3)) ((7 2) (0 0))
+    ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3)) ((10 1) (9 2))
+    ((11 1) (10 0)) ((12 1) (11 0)) ((13 2) (12 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) n (12 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "extend" (enc n esk-2)))
+      (send (cat "extend" (enc n esk-2))))
+    ((recv (cat "quote" nonce)) (obsv n)
+      (send (enc "quote" n nonce aik-0))))
+  (label 60)
+  (parent 56)
+  (unrealized (13 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (deflistener (cat "extend" (enc n esk-2)))
+  (deflistener esk)
+  (precedes ((2 0) (6 0)) ((2 0) (13 0)) ((2 2) (6 2)) ((2 2) (12 0))
+    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
+    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
+    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
+    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (12 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation nonce-test (added-listener esk) n (12 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "extend" (enc n esk-2)))
+      (send (cat "extend" (enc n esk-2)))) ((recv esk) (send esk)))
+  (label 61)
+  (parent 56)
+  (unrealized (13 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 0) (13 1)) ((2 2) (6 2))
+    ((2 2) (12 0)) ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1))
+    ((6 3) (5 3)) ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0))
+    ((9 3) (8 3)) ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0))
+    ((13 2) (10 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (10 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-2
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-2
+            tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-2 tno-2 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-2 tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 62)
+  (parent 59)
+  (unrealized (9 0) (13 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 0) (13 0)) ((2 2) (6 2))
+    ((2 2) (12 0)) ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1))
+    ((6 3) (5 3)) ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0))
+    ((9 3) (8 3)) ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0))
+    ((13 3) (10 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (10 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-2
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-2
+            tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-2 tno-2 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-2 tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 63)
+  (parent 59)
+  (unrealized (9 0) (13 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (deflistener (cat "extend" (enc n esk-2)))
+  (deflistener esk)
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 0) (14 1)) ((2 2) (6 2)) ((2 2) (12 0))
+    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
+    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
+    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
+    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (12 0))
+    ((14 2) (13 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (13 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "extend" (enc n esk-2)))
+      (send (cat "extend" (enc n esk-2)))) ((recv esk) (send esk))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 64)
+  (parent 61)
+  (unrealized (14 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (deflistener (cat "extend" (enc n esk-2)))
+  (deflistener esk)
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((2 0) (6 0)) ((2 0) (14 0)) ((2 2) (6 2)) ((2 2) (12 0))
+    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
+    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
+    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
+    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (12 0))
+    ((14 3) (13 0)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (13 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "extend" (enc n esk-2)))
+      (send (cat "extend" (enc n esk-2)))) ((recv esk) (send esk))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 65)
+  (parent 61)
+  (unrealized (14 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 aik-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((2 0) (6 0)) ((2 0) (9 0)) ((2 0) (13 0)) ((2 2) (6 2))
+    ((2 2) (12 0)) ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0))
+    ((3 1) (2 5)) ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1))
+    ((6 3) (5 3)) ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0))
+    ((9 3) (8 3)) ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0))
+    ((13 3) (10 0)) ((14 2) (13 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (13 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-2
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-2
+            tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-2 tno-2 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-2 tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 66)
+  (parent 63)
+  (unrealized (9 0) (14 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 tpmkey-2 aik-0 aik-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-1) (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-2)
+    (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (deflistener
+    (cat esk-2 (hash "execute transport" (hash "extend" (enc n esk-2)))
+      tne-2 tno-2 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-2))))
+  (deflistener (cat "extend" (enc n esk-2)))
+  (deflistener esk)
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((2 0) (6 0)) ((2 0) (14 0)) ((2 2) (6 2)) ((2 2) (12 0))
+    ((2 4) (3 0)) ((2 6) (4 0)) ((2 6) (7 0)) ((3 1) (2 5))
+    ((4 3) (1 0)) ((5 3) (4 2)) ((6 1) (2 1)) ((6 3) (5 3))
+    ((7 2) (0 0)) ((8 3) (7 1)) ((9 1) (10 0)) ((9 3) (8 3))
+    ((10 1) (9 2)) ((11 1) (10 0)) ((12 1) (11 0)) ((13 1) (12 0))
+    ((14 3) (13 0)) ((15 2) (14 1)))
+  (leadsto ((5 3) (4 2)) ((6 3) (5 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 tne-1 tne-2 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (14 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-1))
+          tno-1 "false"
+          (hash esk-1
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-1))) tne-1 tno-1
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc n esk-2)))
+            tne-2 tno-2 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-2
+         (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+         tno-2 "false"))
+      (send
+        (cat esk-2
+          (hash "execute transport" (hash "extend" (enc n esk-2))) tne-2
+          tno-2 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-2))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-2)))))
+    ((recv (cat "extend" (enc n esk-2)))
+      (send (cat "extend" (enc n esk-2)))) ((recv esk) (send esk))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 67)
+  (parent 65)
+  (unrealized (15 1))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on (vars) (trace (init "0")))
+  (defrole tpm-quote
+    (vars (nonce pcr mesg) (aik akey))
+    (trace (recv (cat "quote" nonce)) (obsv pcr)
+      (send (enc "quote" pcr nonce aik)))
+    (non-orig aik))
+  (defrole tpm-extend-enc
+    (vars (value state mesg) (esk skey) (tne tno data) (tpmkey akey))
+    (trace (recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc value esk)) tno
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc value esk)))
+            tne tno "false"))) (tran state (hash value state)))
+    (uniq-orig tne))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr mesg) (esk skey))
+    (trace (recv (enc "create key" pcr esk))
+      (send (enc "created" k pcr aik)))
+    (non-orig (invk k) aik esk)
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcr mesg) (k aik akey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr aik)) (obsv pcr) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (v n tne tno data) (esk1 esk skey) (k aik tpmkey akey)
+      (pcr mesg))
+    (trace (send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    (non-orig aik esk1 (invk tpmkey))
+    (uniq-orig v n tno esk)
+    (neq (tno n))))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (neq (tno n))
+  (non-orig esk1 aik (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k))))
+  (label 68)
+  (unrealized (0 0) (1 5))
+  (preskeleton)
+  (origs (esk (1 0)) (n (1 2)) (tno (1 2)) (v (1 6)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (precedes ((1 6) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k))))
+  (label 69)
+  (parent 68)
+  (unrealized (1 5))
+  (origs (esk (1 0)) (n (1 2)) (tno (1 2)) (v (1 6)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" k (hash "obtain" (hash n pcr)) aik))
+    (aik aik-0))
+  (precedes ((1 6) (0 0)) ((2 2) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" k (hash "obtain" (hash n pcr)) aik) (1 5))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send
+        (enc "quote" (enc "created" k (hash "obtain" (hash n pcr)) aik)
+          nonce aik-0))))
+  (label 70)
+  (parent 69)
+  (unrealized (2 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk esk-0 skey)
+    (k aik tpmkey akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk-0) (k k) (aik aik))
+  (precedes ((1 6) (0 0)) ((2 1) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 esk-0 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-create-key 2)
+    (enc "created" k (hash "obtain" (hash n pcr)) aik) (1 5))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
+  (label 71)
+  (parent 69)
+  (unrealized (0 0) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk esk-0 skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk-0) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+    (aik aik-0))
+  (precedes ((1 6) (0 0)) ((2 1) (1 5)) ((3 2) (2 0)))
+  (neq (tno n))
+  (non-orig esk1 esk-0 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (2 0))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send
+        (enc "quote"
+          (enc "create key" (hash "obtain" (hash n pcr)) esk-0) nonce
+          aik-0))))
+  (label 72)
+  (parent 71)
+  (unrealized (0 0) (3 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (precedes ((1 4) (2 0)) ((1 6) (0 0)) ((2 1) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (displaced 3 1 alice 5)
+    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (2 0))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
+  (label 73)
+  (parent 71)
+  (unrealized (0 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr v) (aik aik-0))
+  (precedes ((1 4) (2 0)) ((1 6) (3 1)) ((2 1) (1 5)) ((3 2) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation nonce-test (added-strand tpm-quote 3) v (0 0) (enc v k))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" nonce)) (obsv v)
+      (send (enc "quote" v nonce aik-0))))
+  (label 74)
+  (parent 73)
+  (unrealized (3 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr pcr-0 mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr pcr-0) (k k) (aik aik-0))
+  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) v (0 0) (enc v k))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-0 aik-0)) (obsv pcr-0) (send v)))
+  (label 75)
+  (parent 73)
+  (unrealized (3 1))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr pcr-0 nonce mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 aik-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr pcr-0) (k k) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" k pcr-0 aik-0)) (aik aik-1))
+  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((2 1) (4 1))
+    ((3 3) (0 0)) ((4 2) (3 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" k pcr-0 aik-0) (3 1))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k pcr-0 aik-0)) (obsv pcr-0) (send v))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" k pcr-0 aik-0))
+      (send (enc "quote" (enc "created" k pcr-0 aik-0) nonce aik-1))))
+  (label 76)
+  (parent 75)
+  (unrealized (4 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n pcr)))
+    (k k) (aik aik))
+  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (displaced 4 2 tpm-create-key 2)
+    (enc "created" k pcr-0 aik-0) (3 1))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (obsv (hash "obtain" (hash n pcr))) (send v)))
+  (label 77)
+  (parent 75)
+  (unrealized (3 2))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno tne-0 tno-0 data) (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n pcr)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n pcr))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0))
+    ((4 3) (3 2)))
+  (leadsto ((4 3) (3 2)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "obtain" (hash n pcr)) (3 2))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (obsv (hash "obtain" (hash n pcr))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n pcr) (hash "obtain" (hash n pcr)))))
+  (label 78)
+  (parent 77)
+  (unrealized (4 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 3) (4 3)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash n state) (4 3))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state))))
+  (label 79)
+  (parent 78)
+  (unrealized (5 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr
+      (hash esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false")) (aik aik-0))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 3) (4 3)) ((6 2) (5 2)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (5 2))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))
+      (send
+        (enc "quote"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false") nonce aik-0))))
+  (label 80)
+  (parent 79)
+  (unrealized (5 2) (6 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (precedes ((1 0) (5 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
+    ((5 3) (4 3)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation encryption-test (displaced 6 1 alice 3)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (5 2))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state))))
+  (label 81)
+  (parent 79)
+  (unrealized (5 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener
+      (cat esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false"))
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (5 2))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))))
+  (label 82)
+  (parent 79)
+  (unrealized (5 2) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr
+      (hash esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false")) (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value esk-1)
+    (state
+      (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
+        tne-1 tno-1 "false")) (tne tne-2) (tno tno-2) (esk esk-2)
+    (tpmkey tpmkey-2))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (7 3)) ((5 3) (4 3))
+    ((6 2) (5 2)) ((7 3) (6 1)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)) ((7 3) (6 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (6 1))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))
+      (send
+        (enc "quote"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false") nonce aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc esk-1 esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc esk-1 esk-2)))
+            tne-2 tno-2 "false")))
+      (tran
+        (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
+          tne-1 tno-1 "false")
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))))
+  (label 83)
+  (parent 80)
+  (unrealized (5 2) (7 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (precedes ((1 0) (5 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
+    ((5 3) (4 3)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (contracted (tpmkey-1 tpmkey)) esk (5 0)
+    (enc esk tpmkey))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state))))
+  (label 84)
+  (parent 81)
+  (unrealized)
+  (shape)
+  (maps
+    ((0 1)
+      ((v v) (n n) (tne tne) (tno tno) (esk1 esk1) (esk esk) (k k)
+        (aik aik) (tpmkey tpmkey) (pcr state))))
+  (origs (n (1 2)) (tno (1 2)) (esk (1 0)) (tne (5 1)) (tne-0 (4 1))
+    (k (2 1)) (v (1 6))))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((1 0) (6 1)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
+    ((5 3) (4 3)) ((6 2) (5 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (5 0)
+    (enc esk tpmkey))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 85)
+  (parent 81)
+  (unrealized (6 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((1 0) (6 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
+    ((5 3) (4 3)) ((6 3) (5 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (5 0)
+    (enc esk tpmkey))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 86)
+  (parent 81)
+  (unrealized (6 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 2) (6 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (6 0))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0))))
+  (label 87)
+  (parent 82)
+  (unrealized (5 2) (7 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener
+      (cat "execute transport" (hash "extend" (enc n esk-1))))
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (6 0))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1))))))
+  (label 88)
+  (parent 82)
+  (unrealized (5 2) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((1 0) (6 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (1 1))
+    ((5 3) (4 3)) ((6 3) (5 0)) ((7 2) (6 1)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (6 1))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 89)
+  (parent 86)
+  (unrealized (7 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "execute transport")
+    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
+    (esk esk-2) (tpmkey tpmkey-2))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 2) (6 0)) ((8 3) (7 1)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)) ((8 3) (7 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (7 1))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport"
+          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "execute transport" esk-2))) tne-2
+            tno-2 "false")))
+      (tran (hash "extend" (enc n esk-1))
+        (hash "execute transport" (hash "extend" (enc n esk-1))))))
+  (label 90)
+  (parent 87)
+  (unrealized (5 2) (8 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)) ((8 2) (7 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash "extend" (enc n esk-1)) (7 0))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
+      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0))))
+  (label 91)
+  (parent 88)
+  (unrealized (5 2) (8 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (precedes ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener (cat "extend" (enc n esk-1)))
+    (hash "extend" (enc n esk-1)) (7 0))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))))
+  (label 92)
+  (parent 88)
+  (unrealized (8 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
+    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 tpmkey-3 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "execute transport")
+    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
+    (esk esk-2) (tpmkey tpmkey-2))
+  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
+    (tne tne-3) (tno tno-3) (esk esk-3) (tpmkey tpmkey-3))
+  (precedes ((1 2) (9 3)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 2) (6 0)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 tne-3 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "extend" (enc n esk-1)) (8 3))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport"
+          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "execute transport" esk-2))) tne-2
+            tno-2 "false")))
+      (tran (hash "extend" (enc n esk-1))
+        (hash "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
+      (send (cat "establish transport" tne-3))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "extend" esk-3))
+          tno-3 "false"
+          (hash esk-3
+            (hash "execute transport"
+              (hash "extend" (enc "extend" esk-3))) tne-3 tno-3
+            "false")))
+      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
+  (label 93)
+  (parent 90)
+  (unrealized (5 2) (9 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
+    (tne tne-2) (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (precedes ((1 2) (9 3)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)) ((8 2) (7 0)) ((9 3) (8 1)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)) ((9 3) (8 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "extend" (enc n esk-1)) (8 1))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
+      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "extend" esk-2))
+          tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "extend" esk-2))) tne-2 tno-2
+            "false")))
+      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
+  (label 94)
+  (parent 91)
+  (unrealized (5 2) (9 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (precedes ((1 0) (5 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (contracted (esk-1 esk)) n (8 0) (enc n esk))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk)))))
+  (label 95)
+  (parent 92)
+  (unrealized (5 0) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr n) (aik aik-0))
+  (precedes ((1 2) (9 1)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)) ((9 2) (8 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) n (8 0) (enc n esk))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1))))
+    ((recv (cat "quote" nonce)) (obsv n)
+      (send (enc "quote" n nonce aik-0))))
+  (label 96)
+  (parent 92)
+  (unrealized (9 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (precedes ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
+    ((9 1) (8 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-listener esk) n (8 0) (enc n esk))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk)))
+  (label 97)
+  (parent 92)
+  (unrealized (9 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((1 0) (5 0)) ((1 0) (9 1)) ((1 2) (8 0)) ((1 4) (2 0))
+    ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2))
+    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
+    ((8 1) (7 0)) ((9 2) (6 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (6 0)
+    (enc esk tpmkey))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 98)
+  (parent 95)
+  (unrealized (5 0) (9 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((1 0) (5 0)) ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0))
+    ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2))
+    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
+    ((8 1) (7 0)) ((9 3) (6 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (6 0)
+    (enc esk tpmkey))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 99)
+  (parent 95)
+  (unrealized (5 0) (9 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((1 0) (10 1)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 2) (9 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (9 0)
+    (enc esk tpmkey))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 100)
+  (parent 97)
+  (unrealized (10 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((1 0) (10 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 3) (9 0)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (9 0)
+    (enc esk tpmkey))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 101)
+  (parent 97)
+  (unrealized (10 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 data) (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((1 0) (5 0)) ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0))
+    ((1 6) (3 0)) ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2))
+    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
+    ((8 1) (7 0)) ((9 3) (6 0)) ((10 2) (9 1)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (9 1))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 102)
+  (parent 99)
+  (unrealized (5 0) (10 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener v)
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-decrypt 4 (m v) (pcr (hash "obtain" (hash n state)))
+    (k k) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "obtain") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((1 0) (10 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 3) (0 0)) ((4 3) (3 2)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 3) (9 0)) ((11 2) (10 1)))
+  (leadsto ((4 3) (3 2)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (10 1))
+  (traces ((recv v) (send v))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "decrypt" (enc v k)))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (obsv (hash "obtain" (hash n state))) (send v))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "obtain" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "obtain" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "obtain" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 103)
+  (parent 101)
+  (unrealized (11 1))
+  (dead)
+  (comment "empty cohort"))
+
+(comment "Nothing left to do")
+
+(defprotocol envelope basic
+  (defrole tpm-power-on (vars) (trace (init "0")))
+  (defrole tpm-quote
+    (vars (nonce pcr mesg) (aik akey))
+    (trace (recv (cat "quote" nonce)) (obsv pcr)
+      (send (enc "quote" pcr nonce aik)))
+    (non-orig aik))
+  (defrole tpm-extend-enc
+    (vars (value state mesg) (esk skey) (tne tno data) (tpmkey akey))
+    (trace (recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc value esk)) tno
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc value esk)))
+            tne tno "false"))) (tran state (hash value state)))
+    (uniq-orig tne))
+  (defrole tpm-create-key
+    (vars (k aik akey) (pcr mesg) (esk skey))
+    (trace (recv (enc "create key" pcr esk))
+      (send (enc "created" k pcr aik)))
+    (non-orig (invk k) aik esk)
+    (uniq-orig k))
+  (defrole tpm-decrypt
+    (vars (m pcr mesg) (k aik akey))
+    (trace (recv (cat "decrypt" (enc m k)))
+      (recv (enc "created" k pcr aik)) (obsv pcr) (send m))
+    (non-orig aik))
+  (defrole alice
+    (vars (v n tne tno data) (esk1 esk skey) (k aik tpmkey akey)
+      (pcr mesg))
+    (trace (send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    (non-orig aik esk1 (invk tpmkey))
+    (uniq-orig v n tno esk)
+    (neq (tno n))))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (neq (tno n))
+  (non-orig esk1 aik (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k))))
+  (label 104)
+  (unrealized (0 0) (1 5))
+  (preskeleton)
+  (origs (esk (1 0)) (n (1 2)) (tno (1 2)) (v (1 6)))
+  (comment "Not a skeleton"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (precedes ((1 6) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k))))
+  (label 105)
+  (parent 104)
+  (unrealized (0 0) (1 5))
+  (origs (esk (1 0)) (n (1 2)) (tno (1 2)) (v (1 6)))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" k (hash "obtain" (hash n pcr)) aik))
+    (aik aik-0))
+  (precedes ((1 6) (0 0)) ((2 2) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk tpmkey))
+  (uniq-orig v n tno esk)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" k (hash "obtain" (hash n pcr)) aik) (1 5))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send
+        (enc "quote" (enc "created" k (hash "obtain" (hash n pcr)) aik)
+          nonce aik-0))))
+  (label 106)
+  (parent 105)
+  (unrealized (0 0) (2 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk esk-0 skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk-0) (k k) (aik aik))
+  (precedes ((1 6) (0 0)) ((2 1) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 esk-0 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-create-key 2)
+    (enc "created" k (hash "obtain" (hash n pcr)) aik) (1 5))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
+  (label 107)
+  (parent 105)
+  (unrealized (0 0) (2 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk esk-0 skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk-0) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+    (aik aik-0))
+  (precedes ((1 6) (0 0)) ((2 1) (1 5)) ((3 2) (2 0)))
+  (neq (tno n))
+  (non-orig esk1 esk-0 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (2 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "create key" (hash "obtain" (hash n pcr)) esk-0))
+      (send
+        (enc "quote"
+          (enc "create key" (hash "obtain" (hash n pcr)) esk-0) nonce
+          aik-0))))
+  (label 108)
+  (parent 107)
+  (unrealized (0 0) (3 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (precedes ((1 4) (2 0)) ((1 6) (0 0)) ((2 1) (1 5)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (displaced 3 1 alice 5)
+    (enc "create key" (hash "obtain" (hash n pcr)) esk-0) (2 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik))))
+  (label 109)
+  (parent 107)
+  (unrealized (0 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n pcr))) (aik aik))
+  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((3 2) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik) (0 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" (enc v k))) (obsv (hash "refuse" (hash n pcr)))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))))
+  (label 110)
+  (parent 109)
+  (unrealized (3 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (pcr nonce mesg) (v n tne tno data) (esk1 esk skey)
+    (k aik tpmkey aik-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+    (aik aik-0))
+  (precedes ((1 4) (2 0)) ((1 6) (3 1)) ((2 1) (1 5)) ((3 2) (0 0)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik) (0 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" nonce))
+      (obsv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send
+        (enc "quote"
+          (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik) nonce
+          aik-0))))
+  (label 111)
+  (parent 109)
+  (unrealized (3 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (pcr mesg) (v n tne tno tne-0 tno-0 data) (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 akey))
+  (deflistener (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+  (defstrand alice 7 (pcr pcr) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n pcr)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n pcr))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n pcr))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (precedes ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5)) ((3 2) (0 0))
+    ((4 3) (3 1)))
+  (leadsto ((4 3) (3 1)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "refuse" (hash n pcr)) (3 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv pcr)
+      (send (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n pcr)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n pcr)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n pcr)) aik)))
+    ((recv (cat "quote" (enc v k))) (obsv (hash "refuse" (hash n pcr)))
+      (send (enc "quote" (hash "refuse" (hash n pcr)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n pcr) (hash "refuse" (hash n pcr)))))
+  (label 112)
+  (parent 110)
+  (unrealized (4 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 3) (4 3)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash n state) (4 3))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state))))
+  (label 113)
+  (parent 112)
+  (unrealized (5 2))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr
+      (hash esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false")) (aik aik-0))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 3) (4 3)) ((6 2) (5 2)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (5 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))
+      (send
+        (enc "quote"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false") nonce aik-0))))
+  (label 114)
+  (parent 113)
+  (unrealized (5 2) (6 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (precedes ((1 0) (5 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (1 1))
+    ((5 3) (4 3)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation encryption-test (displaced 6 1 alice 3)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (5 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state))))
+  (label 115)
+  (parent 113)
+  (unrealized (5 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener
+      (cat esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false"))
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (5 2))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))))
+  (label 116)
+  (parent 113)
+  (unrealized (5 2) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr
+      (hash esk-1
+        (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+        tno-1 "false")) (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value esk-1)
+    (state
+      (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
+        tne-1 tno-1 "false")) (tne tne-2) (tno tno-2) (esk esk-2)
+    (tpmkey tpmkey-2))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (7 3)) ((5 3) (4 3))
+    ((6 2) (5 2)) ((7 3) (6 1)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)) ((7 3) (6 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false") (6 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce))
+      (obsv
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))
+      (send
+        (enc "quote"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false") nonce aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc esk-1 esk-2)) tno-2
+          "false"
+          (hash esk-2
+            (hash "execute transport" (hash "extend" (enc esk-1 esk-2)))
+            tne-2 tno-2 "false")))
+      (tran
+        (cat (hash "execute transport" (hash "extend" (enc n esk-1)))
+          tne-1 tno-1 "false")
+        (hash esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false"))))
+  (label 117)
+  (parent 114)
+  (unrealized (5 2) (7 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey))
+  (precedes ((1 0) (5 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (1 1))
+    ((5 3) (4 3)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (contracted (tpmkey-1 tpmkey)) esk (5 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state))))
+  (label 118)
+  (parent 115)
+  (unrealized)
+  (shape)
+  (maps
+    ((0 1)
+      ((v v) (n n) (k k) (aik aik) (pcr state) (tne tne) (tno tno)
+        (esk1 esk1) (esk esk) (tpmkey tpmkey))))
+  (origs (n (1 2)) (tno (1 2)) (esk (1 0)) (tne (5 1)) (tne-0 (4 1))
+    (k (2 1)) (v (1 6))))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((1 0) (6 1)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (1 1))
+    ((5 3) (4 3)) ((6 2) (5 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (5 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 119)
+  (parent 115)
+  (unrealized (6 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((1 0) (6 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (1 1))
+    ((5 3) (4 3)) ((6 3) (5 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (5 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 120)
+  (parent 115)
+  (unrealized (6 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 2) (6 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (6 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0))))
+  (label 121)
+  (parent 116)
+  (unrealized (5 2) (7 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener
+      (cat "execute transport" (hash "extend" (enc n esk-1))))
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (6 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1))))))
+  (label 122)
+  (parent 116)
+  (unrealized (5 2) (7 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg) (v n tne tno tne-0 tno-0 data)
+    (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne)
+    (tno tno) (esk esk) (tpmkey tpmkey-1))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((1 0) (6 0)) ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (1 1))
+    ((5 3) (4 3)) ((6 3) (5 0)) ((7 2) (6 1)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tne tno tne-0 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (6 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (tran state (hash n state)))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 123)
+  (parent 120)
+  (unrealized (7 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "execute transport")
+    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
+    (esk esk-2) (tpmkey tpmkey-2))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 2) (6 0)) ((8 3) (7 1)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)) ((8 3) (7 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "execute transport" (hash "extend" (enc n esk-1))) (7 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport"
+          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "execute transport" esk-2))) tne-2
+            tno-2 "false")))
+      (tran (hash "extend" (enc n esk-1))
+        (hash "execute transport" (hash "extend" (enc n esk-1))))))
+  (label 124)
+  (parent 121)
+  (unrealized (5 2) (8 3))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
+  (precedes ((1 2) (5 2)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)) ((8 2) (7 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (hash "extend" (enc n esk-1)) (7 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
+      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0))))
+  (label 125)
+  (parent 122)
+  (unrealized (5 2) (8 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (precedes ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test
+    (added-listener (cat "extend" (enc n esk-1)))
+    (hash "extend" (enc n esk-1)) (7 0))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))))
+  (label 126)
+  (parent 122)
+  (unrealized (8 0))
+  (comment "3 in cohort - 3 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 tne-3 tno-3 data)
+    (esk1 esk esk-0 esk-1 esk-2 esk-3 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 tpmkey-3 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "execute transport" (hash "extend" (enc n esk-1))))
+    (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "execute transport")
+    (state (hash "extend" (enc n esk-1))) (tne tne-2) (tno tno-2)
+    (esk esk-2) (tpmkey tpmkey-2))
+  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
+    (tne tne-3) (tno tno-3) (esk esk-3) (tpmkey tpmkey-3))
+  (precedes ((1 2) (9 3)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 2) (6 0)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)) ((8 3) (7 1)) ((9 3) (8 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 tne-3 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "extend" (enc n esk-1)) (8 3))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "quote" nonce))
+      (obsv (hash "execute transport" (hash "extend" (enc n esk-1))))
+      (send
+        (enc "quote"
+          (hash "execute transport" (hash "extend" (enc n esk-1))) nonce
+          aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport"
+          (cat "extend" (enc "execute transport" esk-2)) tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "execute transport" esk-2))) tne-2
+            tno-2 "false")))
+      (tran (hash "extend" (enc n esk-1))
+        (hash "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "establish transport" tpmkey-3 (enc esk-3 tpmkey-3)))
+      (send (cat "establish transport" tne-3))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "extend" esk-3))
+          tno-3 "false"
+          (hash esk-3
+            (hash "execute transport"
+              (hash "extend" (enc "extend" esk-3))) tne-3 tno-3
+            "false")))
+      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
+  (label 127)
+  (parent 124)
+  (unrealized (5 2) (9 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 tne-2 tno-2 data)
+    (esk1 esk esk-0 esk-1 esk-2 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 tpmkey-2 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (hash "extend" (enc n esk-1))) (aik aik-0))
+  (defstrand tpm-extend-enc 4 (value "extend") (state (enc n esk-1))
+    (tne tne-2) (tno tno-2) (esk esk-2) (tpmkey tpmkey-2))
+  (precedes ((1 2) (9 3)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)) ((8 2) (7 0)) ((9 3) (8 1)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)) ((9 3) (8 1)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 tne-2 esk k)
+  (operation state-passing-test (added-strand tpm-extend-enc 4)
+    (hash "extend" (enc n esk-1)) (8 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "quote" nonce)) (obsv (hash "extend" (enc n esk-1)))
+      (send (enc "quote" (hash "extend" (enc n esk-1)) nonce aik-0)))
+    ((recv (cat "establish transport" tpmkey-2 (enc esk-2 tpmkey-2)))
+      (send (cat "establish transport" tne-2))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "extend" esk-2))
+          tno-2 "false"
+          (hash esk-2
+            (hash "execute transport"
+              (hash "extend" (enc "extend" esk-2))) tne-2 tno-2
+            "false")))
+      (tran (enc n esk-1) (hash "extend" (enc n esk-1)))))
+  (label 128)
+  (parent 125)
+  (unrealized (5 2) (9 3))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (precedes ((1 0) (5 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (contracted (esk-1 esk)) n (8 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk)))))
+  (label 129)
+  (parent 126)
+  (unrealized (5 0) (6 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr n) (aik aik-0))
+  (precedes ((1 2) (9 1)) ((1 4) (2 0)) ((1 6) (3 0)) ((2 1) (1 5))
+    ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0)) ((5 3) (4 3))
+    ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0)) ((9 2) (8 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) n (8 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1))))
+    ((recv (cat "quote" nonce)) (obsv n)
+      (send (enc "quote" n nonce aik-0))))
+  (label 130)
+  (parent 126)
+  (unrealized (9 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey) (k aik tpmkey tpmkey-0 tpmkey-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (precedes ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
+    ((9 1) (8 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-listener esk) n (8 0) (enc n esk))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk)))
+  (label 131)
+  (parent 126)
+  (unrealized (9 0))
+  (comment "2 in cohort - 2 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((1 0) (5 0)) ((1 0) (9 1)) ((1 2) (8 0)) ((1 4) (2 0))
+    ((1 6) (3 0)) ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1))
+    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
+    ((8 1) (7 0)) ((9 2) (6 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (6 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 132)
+  (parent 129)
+  (unrealized (5 0) (9 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 skey) (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((1 0) (5 0)) ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0))
+    ((1 6) (3 0)) ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1))
+    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
+    ((8 1) (7 0)) ((9 3) (6 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (6 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 133)
+  (parent 129)
+  (unrealized (5 0) (9 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state nonce mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-quote 3 (nonce nonce) (pcr esk) (aik aik-0))
+  (precedes ((1 0) (10 1)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 2) (9 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-quote 3) esk (9 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "quote" nonce)) (obsv esk)
+      (send (enc "quote" esk nonce aik-0))))
+  (label 134)
+  (parent 131)
+  (unrealized (10 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr mesg) (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (precedes ((1 0) (10 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 3) (9 0)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation nonce-test (added-strand tpm-decrypt 4) esk (9 0)
+    (enc esk tpmkey))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk)))
+  (label 135)
+  (parent 131)
+  (unrealized (10 1))
+  (comment "1 in cohort - 1 not yet seen"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 data) (esk1 esk esk-0 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk))))
+  (deflistener (cat "extend" (enc n esk)))
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((1 0) (5 0)) ((1 0) (9 0)) ((1 2) (8 0)) ((1 4) (2 0))
+    ((1 6) (3 0)) ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1))
+    ((5 1) (6 0)) ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0))
+    ((8 1) (7 0)) ((9 3) (6 0)) ((10 2) (9 1)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (9 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk)) tno-1
+          "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne-1
+            tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+         tne-1 tno-1 "false"))
+      (send
+        (cat esk (hash "execute transport" (hash "extend" (enc n esk)))
+          tne-1 tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk))))
+      (send (cat "execute transport" (hash "extend" (enc n esk)))))
+    ((recv (cat "extend" (enc n esk)))
+      (send (cat "extend" (enc n esk))))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 136)
+  (parent 133)
+  (unrealized (5 0) (10 1))
+  (dead)
+  (comment "empty cohort"))
+
+(defskeleton envelope
+  (vars (state pcr nonce mesg)
+    (v n tne tno tne-0 tno-0 tne-1 tno-1 data)
+    (esk1 esk esk-0 esk-1 skey)
+    (k aik tpmkey tpmkey-0 tpmkey-1 aik-0 aik-1 akey))
+  (deflistener
+    (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+  (defstrand alice 7 (pcr state) (v v) (n n) (tne tne) (tno tno)
+    (esk1 esk1) (esk esk) (k k) (aik aik) (tpmkey tpmkey))
+  (defstrand tpm-create-key 2 (pcr (hash "obtain" (hash n state)))
+    (esk esk1) (k k) (aik aik))
+  (defstrand tpm-quote 3 (nonce (enc v k))
+    (pcr (hash "refuse" (hash n state))) (aik aik))
+  (defstrand tpm-extend-enc 4 (value "refuse") (state (hash n state))
+    (tne tne-0) (tno tno-0) (esk esk-0) (tpmkey tpmkey-0))
+  (defstrand tpm-extend-enc 4 (value n) (state state) (tne tne-1)
+    (tno tno-1) (esk esk-1) (tpmkey tpmkey-1))
+  (deflistener
+    (cat esk-1 (hash "execute transport" (hash "extend" (enc n esk-1)))
+      tne-1 tno-1 "false"))
+  (deflistener (cat "execute transport" (hash "extend" (enc n esk-1))))
+  (deflistener (cat "extend" (enc n esk-1)))
+  (deflistener esk)
+  (defstrand tpm-decrypt 4 (m esk) (pcr pcr) (k tpmkey) (aik aik-0))
+  (defstrand tpm-quote 3 (nonce nonce)
+    (pcr (enc "created" tpmkey pcr aik-0)) (aik aik-1))
+  (precedes ((1 0) (10 0)) ((1 2) (8 0)) ((1 4) (2 0)) ((1 6) (3 0))
+    ((2 1) (1 5)) ((3 2) (0 0)) ((4 3) (3 1)) ((5 1) (6 0))
+    ((5 3) (4 3)) ((6 1) (5 2)) ((7 1) (6 0)) ((8 1) (7 0))
+    ((9 1) (8 0)) ((10 3) (9 0)) ((11 2) (10 1)))
+  (leadsto ((4 3) (3 1)) ((5 3) (4 3)))
+  (neq (tno n))
+  (non-orig esk1 aik aik-0 aik-1 (invk k) (invk tpmkey))
+  (uniq-orig v n tno tne-0 tne-1 esk k)
+  (operation encryption-test (added-strand tpm-quote 3)
+    (enc "created" tpmkey pcr aik-0) (10 1))
+  (traces
+    ((recv (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((send (cat "establish transport" tpmkey (enc esk tpmkey)))
+      (recv (cat "establish transport" tne))
+      (send
+        (cat "execute transport" (cat "extend" (enc n esk)) tno "false"
+          (hash esk
+            (hash "execute transport" (hash "extend" (enc n esk))) tne
+            tno "false"))) (recv state)
+      (send (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (recv (enc "created" k (hash "obtain" (hash n state)) aik))
+      (send (enc v k)))
+    ((recv (enc "create key" (hash "obtain" (hash n state)) esk1))
+      (send (enc "created" k (hash "obtain" (hash n state)) aik)))
+    ((recv (cat "quote" (enc v k)))
+      (obsv (hash "refuse" (hash n state)))
+      (send (enc "quote" (hash "refuse" (hash n state)) (enc v k) aik)))
+    ((recv (cat "establish transport" tpmkey-0 (enc esk-0 tpmkey-0)))
+      (send (cat "establish transport" tne-0))
+      (recv
+        (cat "execute transport" (cat "extend" (enc "refuse" esk-0))
+          tno-0 "false"
+          (hash esk-0
+            (hash "execute transport"
+              (hash "extend" (enc "refuse" esk-0))) tne-0 tno-0
+            "false")))
+      (tran (hash n state) (hash "refuse" (hash n state))))
+    ((recv (cat "establish transport" tpmkey-1 (enc esk-1 tpmkey-1)))
+      (send (cat "establish transport" tne-1))
+      (recv
+        (cat "execute transport" (cat "extend" (enc n esk-1)) tno-1
+          "false"
+          (hash esk-1
+            (hash "execute transport" (hash "extend" (enc n esk-1)))
+            tne-1 tno-1 "false"))) (tran state (hash n state)))
+    ((recv
+       (cat esk-1
+         (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+         tno-1 "false"))
+      (send
+        (cat esk-1
+          (hash "execute transport" (hash "extend" (enc n esk-1))) tne-1
+          tno-1 "false")))
+    ((recv (cat "execute transport" (hash "extend" (enc n esk-1))))
+      (send (cat "execute transport" (hash "extend" (enc n esk-1)))))
+    ((recv (cat "extend" (enc n esk-1)))
+      (send (cat "extend" (enc n esk-1)))) ((recv esk) (send esk))
+    ((recv (cat "decrypt" (enc esk tpmkey)))
+      (recv (enc "created" tpmkey pcr aik-0)) (obsv pcr) (send esk))
+    ((recv (cat "quote" nonce)) (obsv (enc "created" tpmkey pcr aik-0))
+      (send
+        (enc "quote" (enc "created" tpmkey pcr aik-0) nonce aik-1))))
+  (label 137)
+  (parent 135)
   (unrealized (11 1))
   (dead)
   (comment "empty cohort"))
diff --git a/tst/ffgg.tst b/tst/ffgg.tst
--- a/tst/ffgg.tst
+++ b/tst/ffgg.tst
@@ -1,8 +1,8 @@
 (herald "The ffgg Protocol"
   (comment "From A Necessarily Parallel Attack by Jon K. Millen"))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from ffgg.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/ffgg.scm")
 
 (defprotocol ffgg basic
   (defrole init
diff --git a/tst/fluffy_draft03_gske.tst b/tst/fluffy_draft03_gske.tst
--- a/tst/fluffy_draft03_gske.tst
+++ b/tst/fluffy_draft03_gske.tst
@@ -3,8 +3,8 @@
   (comment
     "Based on the Internet-Draft: https://www.ietf.org/archive/id/draft-hardjono-ace-fluffy-03.txt"))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from fluffy_draft03_gske.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/fluffy_draft03_gske.scm")
 
 (defprotocol fluffy basic
   (defrole sp
diff --git a/tst/fnof_or.tst b/tst/fnof_or.tst
--- a/tst/fnof_or.tst
+++ b/tst/fnof_or.tst
@@ -2,8 +2,8 @@
   (comment
     "Version using variables of sort mesg, with ltk function emulated."))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from fnof_or.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/fnof_or.scm")
 
 (defprotocol or basic
   (defrole init
diff --git a/tst/fnof_test.tst b/tst/fnof_test.tst
--- a/tst/fnof_test.tst
+++ b/tst/fnof_test.tst
@@ -1,8 +1,8 @@
 (herald "Function constraint test protocol"
   (comment "Skeletons 2, 4, and 7 should have no shapes."))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from fnof_test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/fnof_test.scm")
 
 (defprotocol fnoftest basic
   (defrole init
diff --git a/tst/fnof_woolam.tst b/tst/fnof_woolam.tst
--- a/tst/fnof_woolam.tst
+++ b/tst/fnof_woolam.tst
@@ -1,7 +1,7 @@
 (herald "Woo-Lam Protocol, using fnof to emulate ltk function")
 
-(comment "CPSA 3.6.5")
-(comment "All input read from fnof_woolam.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/fnof_woolam.scm")
 
 (defprotocol woolam basic
   (defrole init
diff --git a/tst/fnof_yahalom.tst b/tst/fnof_yahalom.tst
--- a/tst/fnof_yahalom.tst
+++ b/tst/fnof_yahalom.tst
@@ -2,8 +2,8 @@
   "Yahalom Protocol with Forwarding Removed, using fnof to emulate ltk function"
   (bound 12))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from fnof_yahalom.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/fnof_yahalom.scm")
 
 (defprotocol yahalom basic
   (defrole init
diff --git a/tst/goals.tst b/tst/goals.tst
--- a/tst/goals.tst
+++ b/tst/goals.tst
@@ -1,7 +1,7 @@
 (herald goals)
 
-(comment "CPSA 3.6.5")
-(comment "All input read from goals.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/goals.scm")
 
 (defprotocol ns basic
   (defrole init
@@ -871,7 +871,7 @@
   (defstrand init 3 (n1 n1-0) (n2 n2-0) (a a) (b b))
   (non-orig (privk a) (privk b))
   (uniq-orig n1 n1-0)
-  (subgoals
+  (goals
     (forall ((n1 n1-0 n2 n2-0 text) (a b name) (z z-0 strd))
       (implies
         (and (p "init" z 3) (p "init" z-0 3) (p "init" "n1" z n1)
@@ -1057,7 +1057,7 @@
   (defstrand init 3 (n1 n1-0) (n2 n2-0) (a a) (b b))
   (non-orig (privk a) (privk b))
   (uniq-orig n1 n1-0)
-  (subgoals
+  (goals
     (forall ((z z-0 strd))
       (implies (and (p "init" z 3) (p "init" z-0 3)) (= z z-0))))
   (comment "Double initiator point of view 2")
diff --git a/tst/iadh_um.tst b/tst/iadh_um.tst
# file too large to diff: tst/iadh_um.tst
diff --git a/tst/injection.tst b/tst/injection.tst
--- a/tst/injection.tst
+++ b/tst/injection.tst
@@ -2,8 +2,8 @@
   (comment "This protocol contains a man-in-the-middle"
     "attack discovered by Galvin Lowe."))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from injection.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/injection.scm")
 
 (defprotocol ns diffie-hellman
   (defrole init
diff --git a/tst/kerb.tst b/tst/kerb.tst
--- a/tst/kerb.tst
+++ b/tst/kerb.tst
@@ -1,5 +1,5 @@
-(comment "CPSA 3.6.5")
-(comment "All input read from kerb.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/kerb.scm")
 
 (defprotocol kerb-flawed basic
   (defrole init
diff --git a/tst/kerberos++.tst b/tst/kerberos++.tst
--- a/tst/kerberos++.tst
+++ b/tst/kerberos++.tst
@@ -1,5 +1,5 @@
-(comment "CPSA 3.6.5")
-(comment "All input read from kerberos++.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/kerberos++.scm")
 
 (defprotocol kerberos basic
   (defrole client
diff --git a/tst/lt_test.tst b/tst/lt_test.tst
--- a/tst/lt_test.tst
+++ b/tst/lt_test.tst
@@ -2,8 +2,8 @@
   (comment "First and third skeletons should have a shape,"
     "second and fourth should be dead."))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from lt_test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/lt_test.scm")
 
 (defprotocol lttest basic
   (defrole init
diff --git a/tst/neq_test.tst b/tst/neq_test.tst
--- a/tst/neq_test.tst
+++ b/tst/neq_test.tst
@@ -2,8 +2,8 @@
   (comment "First skeleton should have a shape,"
     "second, and hird should be dead."))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from neq_test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/neq_test.scm")
 
 (defprotocol neqtest basic
   (defrole init
diff --git a/tst/ns.tst b/tst/ns.tst
--- a/tst/ns.tst
+++ b/tst/ns.tst
@@ -2,8 +2,8 @@
   (comment "This protocol contains a man-in-the-middle"
     "attack discovered by Galvin Lowe."))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from ns.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/ns.scm")
 
 (defprotocol ns basic
   (defrole init
diff --git a/tst/or.tst b/tst/or.tst
--- a/tst/or.tst
+++ b/tst/or.tst
@@ -1,8 +1,8 @@
 (herald "Otway-Rees Protocol"
   (comment "Standard version using variables of sort mesg"))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from or.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/or.scm")
 
 (defprotocol or basic
   (defrole init
diff --git a/tst/ordered.tst b/tst/ordered.tst
--- a/tst/ordered.tst
+++ b/tst/ordered.tst
@@ -1,7 +1,7 @@
 (herald ordered)
 
-(comment "CPSA 3.6.5")
-(comment "All input read from ordered.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/ordered.scm")
 
 (defprotocol ordered basic
   (defrole dec
diff --git a/tst/owang.tst b/tst/owang.tst
--- a/tst/owang.tst
+++ b/tst/owang.tst
@@ -1,5 +1,5 @@
-(comment "CPSA 3.6.5")
-(comment "All input read from owang.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/owang.scm")
 
 (defprotocol wang basic
   (defrole init1
diff --git a/tst/owat.tst b/tst/owat.tst
--- a/tst/owat.tst
+++ b/tst/owat.tst
@@ -1,8 +1,8 @@
 (herald "One-way Authentication Test with bltk keys"
   (algebra diffie-hellman) (bound 12))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from owat.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/owat.scm")
 
 (defprotocol owa diffie-hellman
   (defrole init
diff --git a/tst/pkinit.tst b/tst/pkinit.tst
--- a/tst/pkinit.tst
+++ b/tst/pkinit.tst
@@ -1,7 +1,7 @@
 (herald "Kerberos PKINIT")
 
-(comment "CPSA 3.6.5")
-(comment "All input read from pkinit.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/pkinit.scm")
 
 (defprotocol pkinit-flawed basic
   (defrole client
diff --git a/tst/plaindh.tst b/tst/plaindh.tst
--- a/tst/plaindh.tst
+++ b/tst/plaindh.tst
@@ -1,8 +1,8 @@
 (herald "Plain diffie-hellman protocol with challenge-response"
   (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from plaindh.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/plaindh.scm")
 
 (defprotocol plaindh diffie-hellman
   (defrole init
diff --git a/tst/priority_test.tst b/tst/priority_test.tst
--- a/tst/priority_test.tst
+++ b/tst/priority_test.tst
@@ -1,7 +1,7 @@
 (herald "Receive priority test protocol")
 
-(comment "CPSA 3.6.5")
-(comment "All input read from priority_test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/priority_test.scm")
 
 (defprotocol priority_test basic
   (defrole init
diff --git a/tst/prottrans.tst b/tst/prottrans.tst
--- a/tst/prottrans.tst
+++ b/tst/prottrans.tst
@@ -1,7 +1,7 @@
 (herald "Protocol Transformations With Rules")
 
-(comment "CPSA 3.6.5")
-(comment "All input read from prottrans.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/prottrans.scm")
 
 (defprotocol ns basic
   (defrole init
diff --git a/tst/reflect.tst b/tst/reflect.tst
--- a/tst/reflect.tst
+++ b/tst/reflect.tst
@@ -1,7 +1,7 @@
 (herald reflect)
 
-(comment "CPSA 3.6.5")
-(comment "All input read from reflect.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/reflect.scm")
 
 (defprotocol reflect basic
   (defrole init
diff --git a/tst/role_uniq.tst b/tst/role_uniq.tst
--- a/tst/role_uniq.tst
+++ b/tst/role_uniq.tst
@@ -1,7 +1,7 @@
 (herald "Role Unique Origination")
 
-(comment "CPSA 3.6.5")
-(comment "All input read from role_uniq.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/role_uniq.scm")
 
 (defprotocol blanchet basic
   (defrole init
diff --git a/tst/rule-order.tst b/tst/rule-order.tst
--- a/tst/rule-order.tst
+++ b/tst/rule-order.tst
@@ -1,7 +1,7 @@
 (herald rule-order)
 
-(comment "CPSA 3.6.5")
-(comment "All input read from rule-order.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/rule-order.scm")
 
 (defprotocol rule-order basic
   (defrole init (vars (s t text)) (trace (send (cat s t))))
diff --git a/tst/staticdh.tst b/tst/staticdh.tst
--- a/tst/staticdh.tst
+++ b/tst/staticdh.tst
@@ -1,7 +1,7 @@
 (herald "Static DH key exchange" (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from staticdh.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/staticdh.scm")
 
 (defprotocol staticdh1 diffie-hellman
   (defrole init
diff --git a/tst/station.tst b/tst/station.tst
--- a/tst/station.tst
+++ b/tst/station.tst
@@ -1,7 +1,7 @@
 (herald "Station-to-station protocol" (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from station.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/station.scm")
 
 (defprotocol station-to-station diffie-hellman
   (defrole init
diff --git a/tst/station2.tst b/tst/station2.tst
--- a/tst/station2.tst
+++ b/tst/station2.tst
@@ -1,7 +1,7 @@
 (herald "Station-to-station protocol" (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from station2.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/station2.scm")
 
 (defprotocol station-to-station diffie-hellman
   (defrole init
diff --git a/tst/subsort_test.tst b/tst/subsort_test.tst
--- a/tst/subsort_test.tst
+++ b/tst/subsort_test.tst
@@ -2,8 +2,8 @@
   (comment "First, third, and fourth skeletons should have a shape,"
     "second should be dead."))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from subsort_test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/subsort_test.scm")
 
 (defprotocol subsorttest basic
   (defrole init
diff --git a/tst/test_small.tst b/tst/test_small.tst
--- a/tst/test_small.tst
+++ b/tst/test_small.tst
@@ -1,7 +1,7 @@
 (herald "small test" (algebra diffie-hellman))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from test_small.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/test_small.scm")
 
 (defprotocol test diffie-hellman
   (defrole init
diff --git a/tst/trust-anchor.tst b/tst/trust-anchor.tst
--- a/tst/trust-anchor.tst
+++ b/tst/trust-anchor.tst
@@ -1,8 +1,8 @@
 (herald trust-anchor
   (comment "Tests rule application on initial skeleton"))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from trust-anchor.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/trust-anchor.scm")
 
 (defprotocol trust-anchor basic
   (defrule trust-anchor-inverse-is-non
diff --git a/tst/unilateral.tst b/tst/unilateral.tst
--- a/tst/unilateral.tst
+++ b/tst/unilateral.tst
@@ -1,7 +1,7 @@
 (herald unilateral)
 
-(comment "CPSA 3.6.5")
-(comment "All input read from unilateral.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/unilateral.scm")
 
 (defprotocol unilateral basic
   (defrole init
diff --git a/tst/uniq-gen-test.tst b/tst/uniq-gen-test.tst
--- a/tst/uniq-gen-test.tst
+++ b/tst/uniq-gen-test.tst
@@ -1,8 +1,8 @@
 (herald "Unique generation test protocols."
   (comment "Skeletons 2, 4, and 7 should have no shapes."))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from uniq-gen-test.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/uniq-gen-test.scm")
 
 (defprotocol uniqgentest basic
   (defrole init
diff --git a/tst/woolam.tst b/tst/woolam.tst
--- a/tst/woolam.tst
+++ b/tst/woolam.tst
@@ -1,7 +1,7 @@
 (herald "Woo-Lam Protocol")
 
-(comment "CPSA 3.6.5")
-(comment "All input read from woolam.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/woolam.scm")
 
 (defprotocol woolam basic
   (defrole init
diff --git a/tst/wrap_decrypt.tst b/tst/wrap_decrypt.tst
--- a/tst/wrap_decrypt.tst
+++ b/tst/wrap_decrypt.tst
@@ -1,7 +1,7 @@
 (herald wrap-decrypt (bound 10))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from wrap_decrypt.lsp")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/wrap_decrypt.lsp")
 (comment "Strand count bounded at 10")
 
 (defprotocol wrap-decrypt basic
diff --git a/tst/yahalom.tst b/tst/yahalom.tst
--- a/tst/yahalom.tst
+++ b/tst/yahalom.tst
@@ -1,8 +1,8 @@
 (herald "Yahalom Protocol with Forwarding Removed"
   (algebra diffie-hellman) (bound 12))
 
-(comment "CPSA 3.6.5")
-(comment "All input read from yahalom.scm")
+(comment "CPSA 3.6.6")
+(comment "All input read from tst/yahalom.scm")
 
 (defprotocol yahalom diffie-hellman
   (defrole init
